アプリ版:「スタンプのみでお礼する」機能のリリースについて

[PL/SQL]REFCURSORが戻り値のプロシージャについて

お世話になってます
タイトルの内容について、親プロシージャより引数を受け取り
子プロシージャでカーソルをオープンして、そのカーソルを親に戻す。
というプロシージャなのですが、親から実行した場合には問題ないのですが
子をSI ObjectBrowserから実行すると[実行][デバッグ]共に
押した瞬間に止まってしまいます。

下記にソースを記述します


--カーソル変数の定義
CREATE OR REPLACE PACKAGE LC7BDEV.PKG_TEST_CURSOR
IS
 TYPE TEST_TYPE IS RECORD
 (COL1 TABLE1.COL1%TYPE ,
  COL2 TABLE1.COL2%TYPE
);
TYPE CUR_TEST IS REF CURSOR RETURN TEST_TYPE;
END;

--親プロシージャ
CREATE OR REPLACE PROCEDURE PD_TEST
 (
  in_COL_KEY IN TABLE1.COL_KEY%TYPE
 )
IS
 TEST_REC  PKG_TEST_CURSOR.CUR_TEST;
 TEMP_COL1 TABLE1.COL1%TYPE;
 TEMP_COL2  TABLE1.COL1%TYPE;
BEGIN
 PD_TEST_KO(in_COL_KEY,TEST_REC);

 loop
  fetch TEST_REC into TEMP_COL1,TEMP_COL2;
  exit when TEST_REC%notfound;
  dbms_output.put_line(TEMP_COL1 || ',' || TEMP_COL2);
 end loop;
 
 close TEST_REC;

END;

--子プロシージャ
CREATE OR REPLACE PROCEDURE PD_TEST_KO
 (
  in_COL_KEY  IN  TABLE1.COL_KEY%TYPE ,
  in_TEST_REC OUT PKG_TEST_CURSOR.CUR_TEST ,
 )
IS
BEGIN

 OPEN in_TEST_REC FOR
  SELECT COL1,COL2
  FROM TABLE1
  WHERE COL_KEY = in_COL_KEY

END;

A 回答 (1件)

ObjectBrowser掲示板の投稿No.4734によると、ref cursor型のパラメータには対応していないようですよ。


ですので、ご自身でSQLを書いて実行すればいいのではないでしょうか。
    • good
    • 0
この回答へのお礼

yamada_g様

前回に引き続きご回答頂きありがとうございます。
やはりobject browserからでは無理だったんですね。
自分でSQLたたいて実行は確認できていたので。

dbms_outputもなく実行後値の確認もとれないため
object browserでどうにかならないかな思っていた次第です。
dbms_outputはソースに手を加えて、実稼動ソースと差異が出てしまう
ため敬遠していました

お礼日時:2010/10/26 15:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!