Oracle SQL - 插入 select 语句 - 错误
Oracle SQL - insert into select statement - error
我创建了一个插入语句,在该插入语句中我想从另一个 table 的另一列中提取数据。我写了下面的脚本并得到了一个错误。
我写了实际的 select 语句并且它自己工作了,这是脚本:
SELECT job_id
FROM JOBS
WHERE job_id IN ('AD_CMMS')
当我尝试将 insert into 语句与 select 语句合并时出现问题,下面是包含 select 语句的完整脚本:
INSERT INTO Employees
VALUES (242, 'Anouar', 'seljouki', 'seljouki84@gmail.com', '0662777081', date19-May-12,
SELECT job_id FROM JOBS WHERE job_id IN ('AD_CMMS'),
16000, NULL, NULL, NULL);
当我运行上面的脚本时,我得到这个错误:
Error starting at line : 26 in command -
INSERT INTO Employees
VALUES (242,'Anouar','seljouki','seljouki84@gmail.com','0662777081',date19-May-12,
SELECT job_id from JOBS where job_id in('AD_CMMS'),16000,NULL,NULL,Null)
Error at Command Line : 28 Column : 1
Error report -
SQL Error: ORA-00936: missing expression
00936. 00000 - "missing expression"
标量子查询需要用括号括起来。此外,日期文字语法需要修复。
所以:
INSERT into Employees
VALUES (
242,
'Anouar',
'seljouki',
'seljouki84@gmail.com',
'0662777081',
date '2012-05-19',
(SELECT job_id from JOBS where job_id = 'AD_CMMS'),
16000,
NULL,
NULL,
NULL
);
注意子查询不能return超过一行,否则会出错。
您也可以将其表述为 INSERT ... SELECT
语句;这保证如果 JOBS
:
中没有匹配项,则不会插入该行
INSERT into Employees
SELECT
242,
'Anouar',
'seljouki',
'seljouki84@gmail.com',
'0662777081',
date '2012-05-19',
job_id,
16000,
NULL,
NULL,
NULL
FROM JOBS
WHERE job_id = 'AD_CMMS'
旁注:
如果您需要坚持问题中显示的当前日期格式,请改用 to_date('19-May-12', 'dd-mon-yy')
。
最好为插入枚举目标列
我创建了一个插入语句,在该插入语句中我想从另一个 table 的另一列中提取数据。我写了下面的脚本并得到了一个错误。
我写了实际的 select 语句并且它自己工作了,这是脚本:
SELECT job_id
FROM JOBS
WHERE job_id IN ('AD_CMMS')
当我尝试将 insert into 语句与 select 语句合并时出现问题,下面是包含 select 语句的完整脚本:
INSERT INTO Employees
VALUES (242, 'Anouar', 'seljouki', 'seljouki84@gmail.com', '0662777081', date19-May-12,
SELECT job_id FROM JOBS WHERE job_id IN ('AD_CMMS'),
16000, NULL, NULL, NULL);
当我运行上面的脚本时,我得到这个错误:
Error starting at line : 26 in command -
INSERT INTO Employees VALUES (242,'Anouar','seljouki','seljouki84@gmail.com','0662777081',date19-May-12, SELECT job_id from JOBS where job_id in('AD_CMMS'),16000,NULL,NULL,Null)
Error at Command Line : 28 Column : 1
Error report -
SQL Error: ORA-00936: missing expression
00936. 00000 - "missing expression"
标量子查询需要用括号括起来。此外,日期文字语法需要修复。
所以:
INSERT into Employees
VALUES (
242,
'Anouar',
'seljouki',
'seljouki84@gmail.com',
'0662777081',
date '2012-05-19',
(SELECT job_id from JOBS where job_id = 'AD_CMMS'),
16000,
NULL,
NULL,
NULL
);
注意子查询不能return超过一行,否则会出错。
您也可以将其表述为 INSERT ... SELECT
语句;这保证如果 JOBS
:
INSERT into Employees
SELECT
242,
'Anouar',
'seljouki',
'seljouki84@gmail.com',
'0662777081',
date '2012-05-19',
job_id,
16000,
NULL,
NULL,
NULL
FROM JOBS
WHERE job_id = 'AD_CMMS'
旁注:
如果您需要坚持问题中显示的当前日期格式,请改用
to_date('19-May-12', 'dd-mon-yy')
。最好为插入枚举目标列