1

PL/SQL パッケージで定義されたレコードと、同じパッケージで定義されたプロシージャがある場合、.NET (C#) 側で「レコード」タイプを作成し、タイプ t_my_rec を使用してプロシージャに渡すことは可能ですか。UDT (Oracle ユーザー定義データ型) を使用してこれを実行できると確信していますが、マネージ ドライバーを使用しているため、まだサポートされていません。

TYPE t_arr_my_rec IS TABLE OF t_my_rec INDEX BY PLS_INTEGER;

TYPE t_my_rec IS RECORD
(
   item_id items.item_id%type,
   item_name items.item_name%type
);

PROCEDURE insert_my_rec
(
   p_my_rec in t_my_rec
);

PROCEDURE bulk_insert_my_rec
(
   p_my_recs in t_arr_my_rec
);

理想的には、テーブル内のすべての項目に対して配列型を定義して、一括 FORALL 挿入ステートメントを実行することは避けたいと考えています。

本当に助かりました!

4

3 に答える 3

0

同様の問題がありました。レコードの各フィールドに連想配列を使用して解決しました。タイプPL / SQLテーブルの単一の出力パラメーターを持つ代わりに、列として非常に多くのパラメーターがあります。このパッケージでは、varchar2 と number の 2 つの基本的な連想配列タイプを定義しました。

パッケージ xxx AS を作成または置換

type t_tbl_alfa is table of varchar2(50) index by binary_integer;
type t_tbl_num  is table of number index by binary_integer;
于 2016-10-27T08:08:03.400 に答える
0

いいえ、できません。レコードを複数の SProc パラメータにフラット化する、一時テーブルを使用するなど、他の手法を使用する必要があります。

OTN フォーラムの関連スレッドを次に示します。 https://community.oracle.com/thread/3620578

于 2015-02-03T00:37:29.773 に答える