簡體   English   中英

Oracle SQL - 插入選擇語句 - 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM