遇到与此处提出的问题相同的问题: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字符串的动态修改,但那很难看。
其他选择?