【问题标题】:Getting an error with Python's cx_oracle callproc functionPython 的 cx_oracle callproc 函数出错
【发布时间】:2012-01-24 17:49:52
【问题描述】:

我有这个代码:

        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' :无,'到期 _time' : 'sysdate + 7', 'config_id' : 6 })
cx_Oracle.DatabaseError: ORA-01858: 在 nu 的位置找到非数字字符 预计梅里克 ORA-06512: 在第 1 行

我传递的参数是什么错误,我该如何解决?

编辑:

命令签名:

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

另外,我该如何提交?

【问题讨论】:

  • “add_command_pkg.add_command”的签名是什么?
  • @Gerrat,这是什么意思?
  • 基本上是函数的第一行:e.g.类似于:procedure add_command (param1 in number, param2 in varchar2)
  • @Gerrat 好的,我在 OP 中添加了它作为编辑

标签: python sql cx-oracle


【解决方案1】:

您不能为参数 expiry_time 传入字符串“sysdate + 7”。

您可以编写一个datetime 对象,或者只是将您的过程更改为接受数字“天数偏移”并在过程本身内从 sysdate 中添加或减去它。

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

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    相关资源
    最近更新 更多