【问题标题】:Exception binding variables with cx_Oracle in pythonpython中使用cx_Oracle的异常绑定变量
【发布时间】:2011-11-02 17:39:47
【问题描述】:

好的,所以我已连接到针对即时客户端 11.2 编译的 python 2.7 和 cx_Oracle 5.1 中的 Oracle 数据库。我有一个指向数据库的游标,运行 SQL 不是问题,除了这个:

cursor.execute('ALTER TRIGGER :schema_trigger_name DISABLE', schema_trigger_name='test.test_trigger')

cursor.prepare('ALTER TRIGGER :schema_trigger_name DISABLE') cursor.execute(None,{'schema_trigger_name': 'test.test_trigger'})

两者都会导致来自 oracle 的错误:

回溯(最近一次通话最后): 文件“connect.py”,第 257 行,在 cursor.execute('ALTER TRIGGER :schema_trigger_name DISABLE', schema_trigger_name='test.test_trigger') cx_Oracle.DatabaseError: ORA-01036: 非法变量名称/编号

运行时:

cursor.execute('ALTER TRIGGER test.test_trigger DISABLE')

完美运行。绑定该变量有什么问题?

【问题讨论】:

    标签: python oracle cx-oracle


    【解决方案1】:

    在您的示例中,test.test_trigger 不是变量而是对象。您只能绑定变量(可以用值替换)。

    您尝试运行的查询在逻辑上等同于:

    ALTER TRIGGER 'test.test_trigger' DISABLE
    

    在这种情况下绑定不起作用,您必须动态构建查询。

    【讨论】:

      【解决方案2】:

      您通常无法在 Oracle 中绑定对象名称。对于变量,它会起作用,但对 trigger_names、table_names 等不起作用。

      【讨论】:

        猜你喜欢
        • 2015-12-28
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        • 2018-01-07
        • 1970-01-01
        • 2021-12-17
        • 1970-01-01
        相关资源
        最近更新 更多