2016-11-24 20 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

これにはいくつか問題があります。まず、select文の最後にセミコロンがありません。第二に(そして最も重要なことに)PL/SQLではinto節なしでselectを実行することはできません。 https://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm – Chrisrs2292

+0

クエリの結果はどうしますか? Chrisrs2292のコメントをよく読んでください。これらは意味をなさない。しかし、結果がちょうど1行であることを100%保証している場合を除き、ここで働かなくてはなりません。 – 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には、上記の例ここで
はあなたに指示を与えるかもしれない実施例です。

関連する問題