【发布时间】:2017-06-16 17:54:36
【问题描述】:
我正在尝试使用 Python 创建一个表并插入一些值
cur = con.cursor()
remove_table = '''
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE {}';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
'''
create_table_workclasses = '''
CREATE TABLE WORKCLASSES (
WORKCLASSES_NAME VARCHAR2(32) NOT NULL
)
'''
insert_workclasses = '''
INSERT ALL
INTO WORKCLASSES VALUES ('Private');
INTO WORKCLASSES VALUES ('Selfemp-inc')
INTO WORKCLASSES VALUES ('Federal-gov')
SELECT * FROM dual;
'''
cur.execute(remove_table.format('WORKCLASSES'))
cur.execute(create_table_workclasses)
cur.execute(insert_workclasses)
cur.close()
con.close()
得到一个错误
cur.execute(create_table_workclasses)
cx_Oracle.DatabaseError: ORA-00922: missing or invalid option
问题是查询在 SQL Developer 中运行良好!
【问题讨论】:
-
换行符可能会影响
create_table_workclasses中的查询。'\nCREATE TABLE WORKCLASSES (\nWORKCLASSES_NAME VARCHAR2(32) NOT NULL\n)\n'NOT NULL\n是无效选项。 -
create table 语句也适用于 cx_Oracle —— 至少就您在此处显示的而言!我没有收到这样的错误!
-
请注意,您在 INSERT ALL 子句中有一个额外的分号
标签: python sql oracle cx-oracle