Что не так с этим фрагментом SQL-запроса, где я пытаюсь добавить несколько записей в таблице? - PullRequest
0 голосов
/ 25 декабря 2018
INSERT ALL
INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID)
VALUES
(102,'Matt','Mumbai','Developer',1022,80000,'10-APR-1991',NULL),
(103,'Jhon','Banglore','Supervisor',1011,75000,'26-MAR-1986',102),
(104,'David','Hyderbad','Clerk',1033,40000,103),
(105,'Paul','Banglore','Clerk',1011,35000,103),
(106,'Jones','Mumbai','Developer',1022,85000,NULL)
SELECT * FROM DUAL;

ОШИБКА в строке 4: ORA-00928: отсутствует ключевое слово SELECT

Я использую Oracle 11g

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Oracle не допускает вставку нескольких строк с values.Я думаю, что самый простой метод - select . . . union all:

INSERT INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID)
    SELECT 102,'Matt','Mumbai','Developer',1022,80000,'10-APR-1991',NULL FROM DUAL UNION ALL
    SELECT 103,'Jhon','Banglore','Supervisor',1011,75000,'26-MAR-1986',102 FROM DUAL UNION ALL
    SELECT 104,'David','Hyderbad','Clerk',1033,40000,103 FROM DUAL UNION ALL
    SELECT 105,'Paul','Banglore','Clerk',1011,35000,103 FROM DUAL UNION ALL
    SELECT 106,'Jones','Mumbai','Developer',1022,85000,NULL FROM DUAL ;
0 голосов
/ 25 декабря 2018

Вам необходимо указать INTO деталь для каждого VALUES:

INSERT ALL
 INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID) 
   VALUES (102,'Matt','Mumbai','Developer',1022,80000,'10-APR-1991',NULL)
 INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID) 
   VALUES (103,'Jhon','Banglore','Supervisor',1011,75000,'26-MAR-1986',102)
 INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID) 
   VALUES (104,'David','Hyderbad','Clerk',1033,40000,SYSDATE,103) 
 INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID) 
   VALUES (105,'Paul','Banglore','Clerk',1011,35000,SYSDATE,103)
 INTO Emp(EmpID,EmpName,Loc,DESIGNATION,DeptID,Sal,HireDate,MgrID) 
   VALUES  (106,'Jones','Mumbai','Developer',1022,85000,SYSDATE,NULL) 
SELECT * FROM DUAL;
-- Rows 3-5 does not have HireDate so I inserted SYSDATE

db <> fiddle demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...