带有绑定变量的cx_Oracle CREATE TABLE AS返回ORA-01036

时间:2015-05-28 03:14:40

标签: oracle python-2.7 cx-oracle

遇到与此处提出的问题相同的问题:23422467

就我而言 - 在RHEL 7上,使用cx_Oracle 5.1.3,Oracle 12.1即时客户端,python 2.7。

dts={'dt1':datetime.date(2015, 05, 26), 'dt2':datetime.date(2015, 05, 27)}
cursor.execute("SELECT * FROM testt WHERE tdate BETWEEN :dt1 AND :dt2", dts)
cursor.execute("CREATE TABLE subtest AS 
                SELECT * FROM testt WHERE tdate BETWEEN :dt1 AND :dt2", dts)

第一个cursor.execute()返回一个iterable,第二个返回ORA-01036。

23422467提供的答案提出了在Oracle中创建过程并使用cursor.callproc()将过程参数作为绑定变量值传递的解决方法,但是我没有创建过程的权限在我正在这里工作的数据库中。

为什么这不起作用?

似乎我唯一的选择是在cx_Oracle中抛弃绑定变量并在python中使用DCL sql字符串的动态修改,但那很难看。

其他选择?

0 个答案:

没有答案