Question

je reçois une exception ORA-01858. Je pense que cela est dû à des paramètres et la date 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;


Est dbms_sql.bind_variable(sql_cursor, ':bind_timestamp', currentDate); NLS dépendante?

Je veux dire avec certains paramètres NLS cela fonctionne normalement et d'autres, il échoue?

Était-ce utile?

La solution

Lorsque vous traitez avec des dates, des paramètres NLS ne sont pas pertinents si vous fournissez votre propre chaîne de format:

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

Je suppose que vous comptez sur la jonglerie de type automatique, à savoir que vous fournissez au besoin une chaîne et de laisser Oracle le jeter à ce jour:

WHERE arrival='05/09/2011'

Dans ce cas, Oracle utilise le format par défaut comme spécifié dans les paramètres NLS.

Mise à jour: BTW, Code ORA-01858 signifie:

un caractère non numérique trouvé où un chiffre était attendu

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top