插入多行查询失败[重复]
Posted
技术标签:
【中文标题】插入多行查询失败[重复]【英文标题】:Inserting multiple rows query failed [duplicate] 【发布时间】:2020-01-08 00:09:39 【问题描述】:INSERT INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
VALUES (7499,'ALLEN','SALESMAN',7698,'20-Feb-81',1600,300,30)
, (7521,'WARD','SALESMAN',7698,'22-Feb-81',1250,500,30);
试图同时插入两行。但未能说出“SQL 命令未正确结束”。有人可以更正查询吗?
错误:
命令行错误:18 列:125 错误报告 - SQL 错误:ORA-00933:SQL 命令未正确结束 00933。00000 -“SQL 命令未正确结束” *原因:*操作:
【问题讨论】:
分享您遇到的错误。 @Gaurav 插入 EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) 值 (7499,'ALLEN','SALESMAN',7698,'20-Feb-81 ',1600,300,30),(7521,'WARD','SALESMAN',7698,'22-Feb-81',1250,500,30) 命令行错误:18 列:125 错误报告 - SQL 错误: ORA-00933: SQL 命令未正确结束 00933. 00000 - “SQL 命令未正确结束” *原因:*操作: 【参考方案1】:您的语法适用于 Microsoft SQL Server,但您的错误消息来自 Oracle DBMS。
您可以使用 INSERT ALL 查询:
INSERT ALL
INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n)
SELECT * FROM dual;
见Official Oracle Documentation
【讨论】:
【参考方案2】:尝试如下
insert into emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
select 7499,'ALLEN','SALESMAN',7698,'20-Feb-81',1600,300,30 from dual
union all
select 7521,'WARD','SALESMAN',7698,'22-Feb-81',1250,500,30 from dual
【讨论】:
成功了...谢谢 @beyou 如果有帮助,请将其标记为已接受【参考方案3】:要在 ORACLE 中插入多条记录,您需要将记录合并到 cte
。或者使用@Arulkumar 提到的Insert All
。
INSERT INTO Emp (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO)
WITH names AS (
SELECT 7499,'ALLEN','SALESMAN',7698,'20-Feb-81',1600,300,30 UNION ALL
SELECT 7521,'WARD','SALESMAN',7698,'22-Feb-81',1250,500,30
)
SELECT * FROM names
您可以在此链接中找到有关 Oracle 中插入命令的更多信息。Link
【讨论】:
【参考方案4】:根据您的错误消息(ORA-00933:SQL 命令未正确结束),DBMS 是 Oracle。
您可以在 Oracle 中对INSERT INTO
使用以下查询。
INSERT ALL
INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (7499,'ALLEN','SALESMAN',7698,'20-Feb-81',1600,300,30)
INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (7521,'WARD','SALESMAN',7698,'22-Feb-81',1250,500,30)
【讨论】:
: 出现错误 INSERT ALL INTO EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) VALUES (7499,'ALLEN','SALESMAN',7698,'20-Feb -81',1600,300,30) 进入 EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) 值 (7521,'WARD','SALESMAN',7698,'22-Feb-81' ,1250,500,30) 命令行错误:22 列:118 错误报告 - SQL 错误:ORA-00928:缺少 SELECT 关键字 00928。00000 -“缺少 SELECT 关键字” 它缺少末尾所需的select
语句。请参阅insert 的文档。以上是关于插入多行查询失败[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Oracle中的多行插入查询(从一张表中选择多行并插入到另一张表中[重复]