Obtenir une erreur avec la fonction CX_ORACLE CallProc de Python
Question
J'ai ce code:
curs.callproc('add_command_pkg.add_command', [],
{ 'command_id' : 7,
'session_id' : None,
'expiry_time' : 'sysdate + 7',
'config_id' : 6 })
Quand je cours cela, je reçois cette erreur:
fichier "n: \ app \ mainwidget.py", ligne 453, dans myfunc
CURS.CALLPROC ('add_command_pkg.add_command', [], {'Command_ID': 7, 'session_id': aucun, expiration _Time ':' sysdate + 7 ',' config_id ': 6})
cx_oracle.databaseError: ORA-01858: Un caractère non numérique a été trouvé où une NU Meric était attendu Ora-06512: à la ligne 1Quel paramètre suis-je mal et comment puis-je le réparer?
EDIT:
Signature de la commande:
( command_id IN NUMBER, expiry_time IN DATE, session_id IN NUMBER DEFAULT NULL, config_id IN NUMBER DEFAULT NULL );
aussi, comment puis-je commettre ceci?
La solution
Vous ne pouvez pas passer dans la chaîne 'sysdate + 7' pour le paramètre expiry_time.
Vous pouvez composer un DateTime objet ou peut-être changer simplement votre procédure pour accepter un chiffre."Days compensation" et ajoutez ou soustrayez-le de Sysdate dans la procédure elle-même.
Pour le besoin, vous pouvez appeler commit sur CX_oracleObjet de connexion.