【发布时间】:2014-05-02 17:07:49
【问题描述】:
我正在尝试在 Python 2.4.6 上使用 cx_Oracle 创建 TABLE AS
以下代码:
query = '''CREATE TABLE TMP_STATS_1 AS
select NUM from INF_CARD where IMPORT_DATE between
to_date(:datepass || ' 00:00:00','dd/mm/yyyy hh24:mi:ss') and
to_date(:datepass || ' 23:59:59','dd/mm/yyyy hh24:mi:ss')'''
curs.execute(query, datepass=datep)
返回:cx_Oracle.DatabaseError: ORA-01036: 非法变量名/编号
取出CREATE TABLE TMP_STATS_1 AS 并只留下SELECT 语句,效果很好。此外,当在 SQLPLUS 上使用CREATE TABLE AS 语句时,它可以正常运行。
CREATE TABLE AS 有什么特定的语法可以在 cx_Oracle 中使用吗?试图找到这方面的例子,但目前还没有找到。
【问题讨论】:
-
datep 是日期还是 varchar?只是猜测您可能正在传递日期,而查询需要 dd/mm/yyyy 格式的 varchar,该格式由 to_date 显式转换。
-
datep 用 datetime.now().strftime('%d/%m/%Y') 测试了,没有运气
标签: python sql oracle solaris cx-oracle