2016-11-24 130 views
-4

我試圖創建一個存儲過程,但在執行下面的存儲過程,我得到的編譯錯誤:PL/SQL存儲過程編譯錯誤

create or replace procedure "Employee"  
is  
begin 
select unique ID from prod p where p.value in('R44', 
'R76', 
'R79', 
'R20', 
'R02', 
'RY1', 
'R71', 
'R38', 
'R58', 
'RM8', 
'RW8', 
'R74', 
'R73', 
'R99', 
'R72', 
'R19', 
'R33', 
'RN3', 
'R34', 
'RP8', 
'R22', 
'R75', 
'R01', 
'R67', 
'R27', 
'R28', 
'R57', 
'RC5', 
'RW7', 
'RZ9', 
'R77', 
'R07', 
'RW6') 

end;  
/  
+0

這不起作用。可以請任何人幫助我嗎? –

+0

這有幾個問題。首先,你在選擇語句的最後缺少一個分號。其次(也是最重要的)你不能在PL/SQL中沒有into子句的情況下執行select。我可能會推薦你閱讀這裏的文檔:https://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm – Chrisrs2292

+0

你想對查詢的結果做什麼? 仔細閱讀Chrisrs2292的評論;這些是有道理的。但一個選擇不會在這裏工作,除非你100%確定結果只是1行。 – wieseman

回答

0

這是很多你的代碼錯誤。
在你的例子中,你的序列背後也缺少一個;
如果你想在屏幕上顯示該序列的輸出,你不能這樣做。
這裏是一個工作的例子,可能會給你的指示:

DECLARE 
    CURSOR cProd IS 
      select unique(ID) Id from prod p where p.value in('R44','R76', 
      'R79','R20','R02','RY1','R71','R38','R58','RM8','RW8','R74','R73','R99','R72','R19','R33','RN3', 
      'R34','RP8','R22','R75','R01','R67','R27','R28','R57','RC5','RW7','RZ9','R77','R07','RW6'); 
    rProd cProd%ROWTYPE; 
BEGIN 
    OPEN cProd; 
    FETCH cProd INTO rProd; 
    CLOSE cProd; 

    DBMS_OUTPUT.PUT_LINE(rProd.Id); 
END; 
/

Link about fetching from a cursor.

編輯:
rProd存儲從查詢中所有的輸出線上面的例子。