使用Toad Data Point 3.8.0.575创建Oracle全局临时表遇ORA-00922错误求助
修正后的Oracle SQL语句及错误说明
错误点分析
- 创建全局临时表的语句未以分号结尾,Oracle需要明确的语句分隔符来识别单条SQL边界
- INSERT语句使用了中文单引号(
‘’),Oracle仅支持英文单引号('')作为字符串常量的边界符 - 每个INSERT语句结尾错误使用逗号,SQL语句之间必须用分号分隔
修正后的完整代码
CREATE GLOBAL TEMPORARY TABLE Emp ( id number(5) NOT NULL, name varchar2(50) NOT NULL, city varchar2(50) NOT NULL ) ON COMMIT DELETE ROWS; INSERT INTO Emp VALUES (1, 'Test1', 'city1'); INSERT INTO Emp VALUES (2, 'Test2', 'city2'); INSERT INTO Emp VALUES (3, 'Test3', 'city3'); SELECT COUNT(*) FROM emp;
批量插入优化建议
如果需要批量插入数据,可使用单INSERT结合UNION ALL的方式减少语句执行次数,效率更高:
CREATE GLOBAL TEMPORARY TABLE Emp ( id number(5) NOT NULL, name varchar2(50) NOT NULL, city varchar2(50) NOT NULL ) ON COMMIT DELETE ROWS; INSERT INTO Emp SELECT 1, 'Test1', 'city1' FROM DUAL UNION ALL SELECT 2, 'Test2', 'city2' FROM DUAL UNION ALL SELECT 3, 'Test3', 'city3' FROM DUAL; SELECT COUNT(*) FROM emp;
内容的提问来源于stack exchange,提问作者Janice
相关产品推荐
相关产品推荐

