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?

È stato utile?

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

scroll top