[英]Oracle SQL - Selecting a value from select and using it as part of the insert
我正在選擇一個數字值並將其存儲到變量中,但是當我在insert語句中使用它時,出現此錯誤:
ORA-00984:此處不允許使用該列。
這是我的SQL:
DECLARE
RyanuserID NUMBER(10);
BEGIN
SELECT Publisher_ID
INTO RyanuserID
FROM tblPublishers
WHERE Publisher_Name ='Ryan'
AND ROWNUM = 1;
END;
/
INSERT INTO tblBooks (Barcode, Book_Title, Publisher_ID, Year_Published, Stock)
VALUES ('45879654236547', 'Lean HTML and CSS', RyanuserID, '2010', 4);
有什么建議嗎? 非常感謝
您可以使用INSERT INTO ... SELECT
將其表達為單個插入語句INSERT INTO ... SELECT
INSERT INTO tblBooks (Barcode, Book_Title, Publisher_ID, Year_Published, Stock)
SELECT '45879654236547', 'Lean HTML and CSS', Publisher_ID, '2010', 4
FROM tblPublishers
WHERE Publisher_Name = 'Ryan' AND ROWNUM = 1;
您應該在begin
.. end
語句之間使用它。 因為無法以這種方式識別RyanuserID
,所以從與表的列類型和變量的類型( tblPublishers.Publisher_ID%type
)的兼容性的角度出發,最好將其定義為返回列的類型。
DECLARE
RyanuserID tblPublishers.Publisher_ID%type := &i_pbl_id; -- as an initialization value you may call in such a way.
v_publisher_name tblPublishers.Publisher_Name%type := '&i_pbl_name' -- Ryan (as one of values);
BEGIN
SELECT Publisher_ID INTO RyanuserID FROM tblPublishers WHERE Publisher_Name = v_publisher_name AND ROWNUM = 1;
INSERT INTO tblBooks (Barcode, Book_Title, Publisher_ID, Year_Published, Stock) VALUES ('45879654236547', 'Lean HTML and CSS', RyanuserID, '2010', 4);
END;
/
此外,最好還是使用
bind variables
代替上面的示例中的literals
。 既然如此,literals
意思就是永遠解析SQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.