質問

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

役に立ちましたか?

解決

日付を扱う場合、独自のフォーマット文字列を提供する場合、NLS設定は関連しません。

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

私の推測では、あなたは自動タイプのジャグリングに依存していると思います。つまり、あなたは文字列を提供し、必要に応じてオラクルをキャストさせています。

WHERE arrival='05/09/2011'

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

アップデート: ところで、 ORA-01858コード 意味:

数字が予想されている場所で見つかった非数字の文字

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top