RefCursorタイプのオブジェクトを出力パラメータとして返す必要があるPL/SQLストアドプロシージャがあります。 SPの終わりにPL/SQL配列をテーブルにキャストするときに無効なデータ型エラーが発生しました
PROCEDURE usp_appnt_stts_driver_wraper2
(in_req_src_system_id IN NUMBER,
in_req_user_info IN VARCHAR2,
out_response_rec1 OUT SYS_REFCURSOR)
、私は、SELECT文を使用して、私のフロントエンドにハードコード値を返すことができています。
OPEN out_response_rec1 FOR
SELECT 'data1', 'data2', 'data3', 'data 4' FROM DUAL;
これは問題なく動作します。しかし、私は配列から取得しているデータを送信する必要があります。
アレイは
FOR g_index IN g_slsnetoutbndarr.FIRST..g_slsnetoutbndarr.LAST
LOOP
out_response_rec.EXTEND;
IF g_SlsnetOutbndArr(g_index).Rectypdesc IS NOT NULL THEN
out_response_rec(g_index).Rectypdesc := g_SlsnetOutbndArr(g_index).Rectypdesc ;
out_response_rec(g_index).Recdetltcode := g_SlsnetOutbndArr(g_index).Recdetltcode;
out_response_rec(g_index).RecDetlDesc := g_SlsnetOutbndArr(g_index).RecDetlDesc ;
END IF;
END LOOP;
だから、このコードの末尾に、Arrayオブジェクトout_response_rec
は私が必要とするすべての値を持って、このように移入されます。
しかし、これらの値をRefCursor出力パラメータにどのように転送すればよいですか?
アップデート1
私は、パッケージの仕様で新しいデータ型を作成しようとしました。
TYPE SlsnetOutbndRec IS RECORD(
Rectypdesc VARCHAR2(30),
Recdetltcode NUMBER,
RecDetlDesc VARCHAR2(130));
TYPE SlsnetOutbndTabArr IS TABLE OF SlsnetOutbndRec;
は最後に、私は
OPEN out_response_rec_result FOR
SELECT * FROM TABLE (Cast(out_response_rec AS SlsnetOutbndTabArr));
としての私のSPのテーブルに配列をキャストしようとしている。しかし、これはInvalid Data Type
エラーを投げています。 SPは、作成した新しいデータ型を認識しません。
だから何があなたの運転配列、 'g_slsnetoutbndarr'を移入私は、インライン、について説明下記参照あなたの条件のための解決策が出ていますか? – APC
こんにちは、別のパッケージのサードパーティSPから来ているので、その中に何が入っているのかわかりません。 – BuggyCoder
"配列"と考えることができるデータ型は複数あります - 'g_slsnetoutbndarr'はコレクション、' VARRAY'または連想配列ですか?また、それはオブジェクト型かレコードを含んでいますか? – MT0