J'ai le problème étrange suivant. J'ai la procédure suivante, dans un package: l'application qui appelle cette procédure utilise "oracledb": "^ 4.2.0".
Ce qui suit est un journal de deviser (formaté pour faciliter la lecture): p> Les éléments suivants, se produisent en production (formaté pour faciliter la lecture): P> DBService: calling stored procedure 'BEGIN pkg.createSmth(
:p_param1,
:p_param2,
:p_param3,
:p_param4,
:p_description,
:p_last_login,
:o_sid,
:p_ret,
:p_mess); END;'
with bindings
[{"dir":3001,"type":2001,"val":"test"},
{"dir":3001,"type":2010,"val":37},
{"dir":3001,"type":2001,"val":"01/06/2020"},
{"dir":3001,"type":2001,"val":"03/06/2020"},
{"dir":3001,"type":2001,"val":"test233"},
{"dir":3001,"type":2001,"val":"admin"},
{"dir":3003,"type":2010},
{"dir":3003,"type":2010},
{"dir":3003,"type":2001}]
pkg.createSmth: get connection - 0 ms
Unexpected DB error
undefined: Error: ORA-01843: not a valid month
ORA-06512: at line 1, trace: Error: ORA-01843: not a valid month
ORA-06512: at line 1
3 Réponses :
Il peut y avoir de nombreuses causes pour cette erreur. Il peut être Vous devez analyser le code pour résoudre ce problème. P> Exemple: p> nls_date_format code> paramètre ou un paramètre de format dans
to_date code> fonction par exemple.
au lieu de Pour connaître le format de date utilisé par votre session / base de données, vous pouvez utiliser le 01/06/2020 code> Utilisez p>
to_date ('01 / 06/2020 ',' dd / mm / aaaa ') code> ou p> li>
date '2020-06-01' code> - Date littéral p> li>
ul>
nls_session_parameters code> ou
nls_database_parameters code> vue (nom de paramètre:
nls_date_format code> ). Mais il est recommandé d'utiliser le format spécifique avec
to_date code> ou
date littéral code> comme
nls_date_format code> peut changer au fil du temps et votre code ne fonctionnera pas. p>
Ne pas utiliser l'un d'eux dans Dev et cela fonctionne comme il devrait
Ensuite, dans Dev, nls_date_format code> que votre session utilise doit être
DD / mm / aaaa code> qui est différent de prod que vous êtes donc confronté au problème de Prod. C'est pourquoi il est recommandé de toujours utiliser le
to_date code> ou
date littéral code> pour créer la date indiquée dans la réponse.
Si la procédure s'attend à ce que Ceci est chaîne: p> date code>, ne fournissez pas une chaîne
date '2020-06-01'
to_date('01/06/2020', 'dd/mm/yyyy')
Le paramètre de procédure est de date. Oracle-dB type est une chaîne. Pour la mappage entre types de nœuds-oracledb et types Oracle, veuillez cocher oracle.github.io/node-oracledb/doc/...