1

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設定では正常に機能し、他の設定では失敗しますか?

4

1 に答える 1

0

日付を扱う場合、独自のフォーマット文字列を指定すると、NLS 設定は関係ありません。

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

私の推測では、自動型ジャグリングに依存している、つまり、文字列を提供し、必要に応じて Oracle に日付にキャストさせていると思われます。

WHERE arrival='05/09/2011'

その場合、Oracle は NLS 設定で指定されたデフォルトの形式を使用します。

更新:ところで、ORA-01858 コードの意味:

数字が期待されていた場所に数字以外の文字が見つかりました

于 2011-09-05T20:48:45.107 に答える