使用Python的cx_oracle的callproc函数时出现错误

0 投票
1 回答
1230 浏览
提问于 2025-04-17 10:59

我有这段代码:

        curs.callproc('add_command_pkg.add_command', [],
                      { 'command_id' : 7,
                        'session_id' : None,
                        'expiry_time' : 'sysdate + 7',
                        'config_id' : 6 })

当我运行这段代码时,出现了这个错误:

文件 "N:\app\MainWidget.py",第453行,在 myFunc 函数中
curs.callproc('add_command_pkg.add_command', [], { 'command_id' : 7, 'session_id' : None, 'expiry_time' : 'sysdate + 7', 'config_id' : 6 })
cx_Oracle.DatabaseError: ORA-01858: 在预期为数字的地方发现了非数字字符
ORA-06512: 在第1行

我传入了哪个参数不对,应该怎么修复呢?

编辑:

命令的签名:

                                        ( command_id   IN NUMBER,
                                          expiry_time  IN DATE,
                                          session_id   IN NUMBER DEFAULT NULL,
                                          config_id    IN NUMBER DEFAULT NULL
                                        );

另外,我该如何提交这个?

1 个回答

1

你不能直接把字符串'sysdate + 7'作为参数expiry_time传进去。

你可以创建一个日期时间对象,或者干脆把你的程序改成接受一个数字“天数偏移”,然后在程序内部把这个数字加到或减去当前日期上。

至于提交,你可以在cx_Oracle的连接对象上调用commit

撰写回答