Question

Je veux exécuter une fonction simple dans Oracle.La signature est définie comme suit:

CREATE OR REPLACE FUNCTION NewCaseListForValidation
(
                             p_fromDate in DATE,
                             p_toDate in DATE,
                             p_rowCount in INT
)
RETURN
                             SYS_REFCURSOR
IS
                             return_value SYS_REFCURSOR;
...

Je devrais être capable de l'exécuter avec:

var rc refcursor
exec :rc := newcaselistforvalidation('2010-01-01','2011-01-01',100);
print :rc

Mais en tapant "newcaselistforvalidation('2010-01-01','2011-01-01',100)", j'obtiens:

ERROR at line 1:
ORA-01861: literal does not match format string
ORA-06512: at line 1

J'ai googlé un peu et il semble que je ne peux pas comprendre pour saisir la date dans un format correct.Quelqu'un peut-il m'aider?

Était-ce utile?

La solution

Requête NLS_Parameters dans Oracle - vous pourrez alors voir quel format votre base de données accepte les dates.

En règle générale, cependant, j'utilise la fonction to_date ():

to_date('01-01-2011','DD-MM-YYYY');

Au Royaume-Uni pour saisir mes dates.

Autres conseils

Une alternative à la fonction to_date () consiste à utiliser le format standard ANSI pour les littéraux de date ou d'horodatage:

DATE '2010-01-31'
TIMESTAMP '2010-01-31 21:22:23'

La date et l'heure sont toujours spécifiées à l'aide des règles ISO (Yyyy-mm-dd et 24hour format pour le temps)

Cela fonctionne également sur beaucoup d'autres DBM (conformes standard).

Il est préférable de ne pas compter sur une valeur particulière dans NLS_PARAMETERS Paramètres, car cela fera votre fonction Pause Dans l'env avec un autre Nls_date_format.

Identifiant spécifier explicitement le formatage de la date dans votre fonction comme suggéré dans la réponse ci-dessus

exec :rc := newcaselistforvalidation(to_date('2010-01-01','YYYY-MM-DD'),to_date('2011-01-01','YYYY-MM-DD'),100);

INSÉREZ DANS tblDate (dateStart) Values ('20-JUN-2013');Si vous modifiez le mois entier en chaîne de caractères 'DD-MON-YYYY' fonctionne comme un valide chaîne de données sans avoir à faire précéder la DATE de l'identificateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top