Pregunta

Quiero ejecutar una función simple en Oracle.La firma se define de la siguiente manera:

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;
...

Debería poder ejecutarlo con:

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

Pero al escribir "newcaselistforvalidation ('2010-01-01', '2011-01-01', 100)", obtengo:

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

Busqué en Google un poco y parece que no puedo escribir la fecha en el formato correcto.¿Alguien puede ayudarme?

¿Fue útil?

Solución

Consulte NLS_PARAMETERS en Oracle; luego podrá ver en qué formato acepta fechas su base de datos.

Sin embargo, normalmente uso la función to_date ():

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

En el Reino Unido para ingresar mis fechas.

Otros consejos

Una alternativa a la función to_date () es usar el formato estándar ANSI para los literales DATE o TIMESTAMP:

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

La fecha y la hora siempre se especifican mediante las reglas ISO (AAAA-MM-DD y formato de 24 horas para la hora)

Esto también funciona en muchos otros DBMS (que cumplen con los estándares).

Es mejor no confiar en un valor particular en la configuración de NLS_PARAMETERS , porque esto hará que su función se rompa en el entorno con otro NLS_DATE_FORMAT .

Especificaría explícitamente el formato de fecha en su función como se sugiere en la respuesta anterior

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

INSERT INTO tblDate (dateStart) Valores ('20 -JUN-2013 '); Si cambia el entero del mes a una cadena, 'DD-MON-YYYY' funciona como una cadena de datos válida sin tener que ir precedida del identificador DATE.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top