Pregunta

Obtengo una excepción ORA-01858. Creo que se debe a la configuración y la fecha de NLS:

declare
    currentDate DATE := sysdate;
    queryString VARCHAR2(300) := '... where blablabla = :bind_timestamp ...';
    sql_cursor integer;
begin
    sql_cursor := dbms_sql.open_cursor;
    dbms_sql.parse(sql_cursor, queryString, dbms_sql.native);
    dbms_sql.bind_variable(sql_cursor, ':bind_timestamp', currentDate);
    rowsProcessed := dbms_sql.execute(sql_cursor);
    dbms_sql.close_cursor(sql_cursor);
end;


Es dbms_sql.bind_variable(sql_cursor, ':bind_timestamp', currentDate); ¿Dependiente de NLS?

Quiero decir con algunas configuraciones de NLS, funciona normalmente y otras falla.

¿Fue útil?

Solución

Cuando se trata de fechas, la configuración de NLS no es relevante si proporciona su propia cadena de formato:

WHERE arrival=TO_DATE('2011-09-05', 'yyyy-mm-dd')

Supongo que confía en el malabarismo automático, es decir, está proporcionando una cadena y dejando que Oracle la elija hasta la fecha según sea necesario:

WHERE arrival='05/09/2011'

En ese caso, Oracle usa el formato predeterminado como se especifica en su configuración NLS.

Actualizar: Por cierto, el ORA-01858 Código medio:

un personaje no numérico encontrado donde se esperaba un dígito

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