data Oracle e NLS impostazioni
Domanda
ottengo un'eccezione ORA-01.858. Penso che sia a causa delle impostazioni NLS e la data:
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;
Is dbms_sql.bind_variable(sql_cursor, ':bind_timestamp', currentDate);
NLS dipendente?
Voglio dire con una certa NLS impostazioni funziona normalmente e gli altri non riesce?
Soluzione
Quando si tratta di date, NLS impostazioni non sono rilevanti se si fornisce la propria stringa di formato:
WHERE arrival=TO_DATE('2011-09-05', 'yyyy-mm-dd')
La mia ipotesi è che si fa affidamento su tipo di giocoleria automatico, vale a dire, si sta fornendo una stringa e lasciare Oracle gettò fino ad oggi, come richiesto:
WHERE arrival='05/09/2011'
In questo caso, Oracle utilizza il formato predefinito, come specificato nelle impostazioni NLS.
Aggiornamento: A proposito, il codice ORA-01.858 mezzo:
un carattere non numerico trovato dove era previsto una cifra