1

タイプ RefCursor のパッケージを作成しました。

ストアド プロシージャでパッケージを使用しています。

コードは次のようになります。

CREATE OR REPLACE PACKAGE PRODDB.types
AS
type cursorType is ref cursor;
END;

CREATE OR REPLACE PROCEDURE PRODDB.P_Get_AdminPLCReport         
(        
    Final_Output out TYPES.cursorType

)        
AS

BEGIN       
IF( Criteria='1') THEN        
  OPEN Final_Output FOR 
  SELECT  Personal_Information.F_Salutation
  FROM    Allotment_Information;

END IF;

END P_Get_AdminPLCReport;

このストアド プロシージャで 2 つの if 条件を使用したいと考えています。

私はPl-Sqlが初めてです。

これの構文を教えてくれる人はいますか。

ありがとう

--

アップデート

ありがとう、ジャスティン(ここに応答)、

しかし、次のような2つの条件を使用したい:

IF( 条件 = '1') の場合

// クエリ; 終了する場合

IF( 条件 = '2') の場合

// クエリ;

終了する場合

param基準の値を渡します。

criteria の値に基づいて、さまざまなクエリを実行したいと考えています。

4

2 に答える 2

1

REF CURSORまず、10g の TYPES パッケージで弱い型付けを定義する必要はありません。一部の古いリリースではこれが必要でしたが、Oracle にはSYS_REFCURSOR現在型があります。

次に、 variable の宣言がないため、プロシージャはコンパイルされませんCriteria。私はそれを無視し、変数を別の場所で宣言して初期化したと仮定します。

2番目の条件が何であるかに応じて、最も単純なオプションは一般的に次のようなものになります

CREATE OR REPLACE PROCEDURE PRODDB.P_Get_AdminPLCReport 
(
  Final_Output OUT sys_refcursor
)
AS
BEGIN
  IF( criteria = '1' and someOtherCriteria = '2' )
  THEN
    OPEN final_output FOR
      SELECT personal_information.f_salutation
        FROM allotment_information;
  END IF;
END p_get_adminPLCReport;
于 2011-04-28T18:26:29.053 に答える