дата оракула и настройки nls - PullRequest
1 голос
/ 05 сентября 2011

Я получаю исключение ORA-01858. Я думаю, что это связано с настройками 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;


Зависит ли dbms_sql.bind_variable(sql_cursor, ':bind_timestamp', currentDate); NLS?

Я имею в виду, что при некоторых настройках NLS он работает нормально, а при других - нет?

1 Ответ

0 голосов
/ 06 сентября 2011

При работе с датами настройки NLS не имеют значения, если вы указали собственную строку формата:

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

Я предполагаю, что вы полагаетесь на автоматическое жонглирование типов, то есть вы предоставляете строку и позволяете Oracle приводить ее в актуальном состоянии, как требуется:

WHERE arrival='05/09/2011'

В этом случае Oracle использует формат по умолчанию, указанный в настройках NLS.

Обновление: Кстати, код ORA-01858 означает:

обнаружен нечисловой символ там, где ожидалась цифра

...