插入多行查询失败[重复]

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中的多行插入查询(从一张表中选择多行并插入到另一张表中[重复]

插入多行时重复项会发生什么?

插入多行时重复会发生啥?

试图在我的 SQL 表中插入多行。总是显示 SQL 命令未正确结束 [重复]

如何在oracle 11g中使用一个INSERT语句在一列中插入多行[重复]