2012-04-20 7 views
4

タイトルによれば、PL/SQL関数から何も返すことはできませんか?Oracle:PL/SQL関数から何も返さない可能性がありますか?

My機能は次のとおりである、と私はリターンを去るとき、私はエラーを取得しています:

create or replace 
FUNCTION DeleteAttributes 
(code IN varchar2) 
CURSOR c_attributes = SELECT ... 

BEGIN 
    FOR attribute_record IN c_attributes 
    LOOP 
     ... 
    END LOOP; 
END; 
+7

返品のない機能は...手続きです。ドーナツ...穴なし...デンマーク語です。 –

答えて

10

OracleのPL/SQLファンクションを必須はリターンを持っています。サブプログラムをプロシージャとして宣言すると、戻り値がないときにエラーが発生することはありません(プロシージャにはに戻り値がありません)。

create or replace 
PROCEDURE DeleteAttributes 
(code IN varchar2) 
CURSOR c_attributes = SELECT ... 

BEGIN 
    FOR attribute_record IN c_attributes 
    LOOP 
     ... 
    END LOOP; 
END; 
+9

プロシージャにreturn文を付けることができます。値を返すことはできません。必須ではありませんが、プロシージャでRETURNを使用できます。 – DCookie

+1

@DCookie:プロシージャで 'RETURN;'は何をしますか?それはすぐそこの手続きの実行を終了しますか? – FrustratedWithFormsDesigner

+2

プロシージャを終了し、呼び出し元に戻ります。 – DCookie

4

定義によって、関数は値を返すため、RETURNステートメントが必要です。 Oracleマニュアルのsyntax definition for a functionをご覧ください。 RETURNはオプションではありません。

私はあなたがこれをしたいと思っているのかどうかはわかりません。

関連する問題