[英]Oracle SQL - insert into select statement - error
我創建了一個插入語句,在該插入語句中,我想從另一個表的另一列中提取數據。 我編寫了以下腳本並收到錯誤消息。
我寫了實際的 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);
當我運行上面的腳本時,出現此錯誤:
從第 26 行開始的錯誤 -
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,空,空)
命令行錯誤:28 列:1
錯誤報告 -
SQL 錯誤:ORA-00936:缺少表達式
00936. 00000 - “缺少表達”
標量子查詢需要用括號括起來。 此外,需要修復日期文字語法。
所以:
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
);
注意子查詢不能返回多於一行,否則你會得到一個錯誤。
您也可以將其表述為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')
問題中顯示的當前日期格式,請改用to_date('19-May-12', 'dd-mon-yy')
。
枚舉用於插入的目標列是一個好習慣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.