Oracle执行INSERT批量插入报missing right parenthesis错误如何解决
问题解决方法
你提供的SQL存在4处语法错误,逐一修正即可解决报错:
- SELECT后返回的列列表无需额外包裹括号,Oracle会将带括号的多值判定为记录类型,触发括号匹配异常
- UNION关键字后不需要加逗号,直接写后续的SELECT语句即可
- 空值的Manager字段不能直接留空,需要显式指定
NULL - 最后一个SELECT语句后无需加多余的UNION关键字
修正后的可执行SQL如下:
INSERT INTO CS350REGT ("Region Code", "Region Name", "HQ", "Manager") SELECT 'NW', 'Northwest', 'Spokane, WA', '944 58 432' FROM DUAL UNION SELECT 'S', 'Southern', 'Dallas, TX', NULL FROM DUAL UNION SELECT 'NE', 'New England', 'Albany, NY', '900 58 472' FROM DUAL UNION SELECT 'HQ', 'Headquarters Staff', 'Waltham, MA', NULL FROM DUAL UNION SELECT 'SE', 'Southeast', 'Miami, FL', '785 02 675' FROM DUAL;
如果你的CS350REGT表的Manager字段设置了非空约束,把上面的NULL替换为合法的有效值即可正常执行。
补充优化建议:如果确认待插入的五条记录无重复,可将所有
UNION替换为UNION ALL,避免Oracle执行不必要的去重排序操作,提升插入效率。
内容的提问来源于stack exchange,提问作者Daniel Valenzuela
相关产品推荐
相关产品推荐

