- - PR -
Oracleのパッケージで引数が配列の場合どうしたら???
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-05-28 19:43
こんばんは。いつも拝見させてもらっています。
OLEDB.NET データプロバイダとVB.NETを使って開発しています。 今悩んでいることは、Oracleのパッケージへの引数が 配列であるときの書き方です。 パッケージからの結果をVB側に読み込むことは、ヘルプなどを見て なんとか解決できたのですが、VB側から配列の中身を渡すところが どうしてもわかりません。 いろいろなスレッドを拝見すると、同様に悩んでらっしゃる方が いらっしゃるようです。 どのように解決なさったのか、是非お教え頂ければ幸いです。 ●現在していること 売上伝票のようにヘッダと明細で構成されたエントリー画面で 複数ある明細データを、パッケージのテーブル型の引数に入れて DBに更新させたい ●環境 OS :Windows2000 言語 :VB.NET プロバイダ :OLEDB.NET データプロバイダ ●パッケージ内容 「TBL_URIAGE」というテーブルにInsertするパッケージです。 (列は、「URI_NO」だけあるとします) CREATE OR REPLACE PACKAGE PAKAGE_TEST IS TYPE TABLE_URIAGE IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER; PROCEDURE READ_URIAGE( p_cnt IN Number, -- 明細の行数 p_head_table OUT TABLE_URIAGE -- 売上明細用テーブル ); END; / CREATE OR REPLACE PACKAGE BODY PAKAGE_TEST IS PROCEDURE WRITE_URIAGE( p_cnt IN Number, p_head_table OUT TABLE_URIAGE ) IS counter NUMBER = 1; BEGIN FOR counter IN 1..p_cnt LOOP insert into TBL_URIAGE (URI_NO) values (p_head_table(counter)); END LOOP; COMMIT; END WRITE_URIAGE; END; / ちなみに読み込むときは Dim DbCommand As New OleDbCommand DbCommand.Parameters.Add _ (New OleDbParameter("p_urino", OleDbType.Char)).Direction = _ ParameterDirection.Input DbCommand.Parameters("p_urino").Value = "U04050001" DbCommand.Connection = conn DbCommand.CommandText = _ "{call PAKAGE_TEST.READ_URIAGE(?, {resultset 2, p_head_table})}" DbCommand.CommandType = CommandType.Text Dim Da As New OleDbDataAdapter(DbCommand) Dim Ds As New DataSet Da.Fill(Ds, "Uriage") Grid.DataSource = ds.Tables("Uriage") としたのですが。。どう書き換えたらVBから渡すことが出来るのでしょうか? |
1