Frage

Ich bekomme eine ORA-01858-Ausnahme. Ich denke, es liegt an den NLS -Einstellungen und dem Datum:

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;


Ist dbms_sql.bind_variable(sql_cursor, ':bind_timestamp', currentDate); NLS abhängig?

Ich meine, mit einigen NLS -Einstellungen funktioniert es normal und andere scheitert es?

War es hilfreich?

Lösung

Wenn Sie sich mit Daten befassen, sind die NLS -Einstellungen nicht relevant, wenn Sie Ihre eigene Formatzeichenfolge angeben:

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

Ich vermute, dass Sie sich auf das automatische Jonglieren verlassen, dh eine Saite und lassen Oracle sie nach Bedarf bis Datum werfen:

WHERE arrival='05/09/2011'

In diesem Fall verwendet Oracle das Standardformat wie in Ihren NLS -Einstellungen angegeben.

Aktualisieren: Übrigens, die ORA-01858 CODE meint:

Ein nicht numerischer Charakter fand heraus, wo eine Ziffer erwartet wurde

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top