You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle执行当前查询与执行当前脚本的区别及多插入操作方案咨询

问题解决说明

报错原因与脚本执行操作说明

普通「执行」按钮默认单次仅支持解析运行单条SQL语句,你提交的内容包含两条独立INSERT语句,解析时会将整段内容视为单条SQL处理,因此触发ora-00933 sql command not properly ended错误。「以脚本执行」模式会自动按语句分隔符拆分多条SQL依次执行,因此可以正常运行。

向他人说明操作时可参考以下步骤:

  • 打开Oracle数据库操作控制台(如PL/SQL Developer、Oracle SQL Developer等),将所有INSERT语句完整粘贴到SQL编辑区域
  • 不要点击普通「执行」(部分工具标注为Execute、运行)按钮,找到标注为「以脚本执行」(部分工具标注为Run Script,默认快捷键多为F5)的功能按钮点击
  • 执行完成后在输出面板查看执行结果,确认所有语句执行成功即可

Oracle多条插入的其他实现方案

除了脚本执行多条独立INSERT语句外,还有3种常用的单语句批量插入方案,可直接通过普通「执行」按钮运行,无需切换脚本模式:

方案1:INSERT ALL 语法

Oracle原生支持的多插入语法,适合插入字段规则一致的多组数据:

INSERT ALL
INTO table_name (ID, code, date_t) VALUES (schema_name.SEQ$table_name.NEXTVAL, '232323232323', to_date('2020-09-01','YYYY-MM-DD'))
INTO table_name (ID, code, date_t) VALUES (schema_name.SEQ$table_name.NEXTVAL, '242424242424', to_date('2020-09-01','YYYY-MM-DD'))
SELECT 1 FROM DUAL;

注意:语法末尾必须跟随SELECT 1 FROM DUAL子句,否则会报错。

方案2:UNION ALL 拼接查询插入

适合批量插入同源、可枚举的数据,数据量较大时写法更简洁:

INSERT INTO table_name (ID, code, date_t)
SELECT schema_name.SEQ$table_name.NEXTVAL, code, date_t FROM (
    SELECT '232323232323' code, to_date('2020-09-01','YYYY-MM-DD') date_t FROM DUAL
    UNION ALL
    SELECT '242424242424' code, to_date('2020-09-01','YYYY-MM-DD') date_t FROM DUAL
);

方案3:PL/SQL 匿名块

适合需要增加循环、条件判断等逻辑的复杂批量插入场景:

BEGIN
    INSERT INTO table_name (ID, code, date_t) VALUES (schema_name.SEQ$table_name.NEXTVAL, '232323232323', to_date('2020-09-01','YYYY-MM-DD'));
    INSERT INTO table_name (ID, code, date_t) VALUES (schema_name.SEQ$table_name.NEXTVAL, '242424242424', to_date('2020-09-01','YYYY-MM-DD'));
    COMMIT;
END;
/

内容的提问来源于stack exchange,提问作者FeoJun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:27:04