插入多行查询失败
Inserting multiple rows query failed
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 command not properly ended"。有人可以更正查询吗?
错误:
Error at Command Line : 18 Column : 125 Error report - SQL Error: ORA-00933: SQL command not properly ended 00933. 00000 - "SQL command not properly ended" *Cause: *Action:
根据您的错误消息(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)
要在 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
您可能会找到此 link 以了解有关 Oracle 中插入命令的更多信息。Link
您的语法适用于 Microsoft SQL 服务器,但您的错误消息来自 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;
试试下面的方法
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
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 command not properly ended"。有人可以更正查询吗?
错误:
Error at Command Line : 18 Column : 125 Error report - SQL Error: ORA-00933: SQL command not properly ended 00933. 00000 - "SQL command not properly ended" *Cause: *Action:
根据您的错误消息(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)
要在 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
您可能会找到此 link 以了解有关 Oracle 中插入命令的更多信息。Link
您的语法适用于 Microsoft SQL 服务器,但您的错误消息来自 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;
试试下面的方法
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