0
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 命令未正确结束” *原因:*操作:

4

4 回答 4

3

根据您的错误消息(ORA-00933:SQL 命令未正确结束),DBMS 是 Oracle。

您可以INSERT INTO在 Oracle 中使用以下查询。

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)
于 2019-09-05T06:32:55.667 回答
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
于 2019-09-05T06:39:18.033 回答
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;

请参阅官方 Oracle 文档

于 2019-09-05T06:39:09.737 回答
1

要在 ORACLE 中插入多条记录,您需要将记录合并到cte. 或Insert All如@Arulkumar 所述使用。

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 中插入命令的更多信息。关联

于 2019-09-05T06:37:01.250 回答