- PR -

ODP.NETを使用してOUT引数に配列を持つストアドファンクションのパラメータセットについて

1
投稿者投稿内容
かりんとう
会議室デビュー日: 2004/08/13
投稿数: 1
投稿日時: 2004-08-13 20:50
VB.NET + ODP.NET 初心者です。

OracleDBにOUT引数に配列を持つストアドを作成して
VB.NET + ODP.NETでコールしようとしているんですが、
配列引数のパラメータセット部分とパラメータを取得部分の記述方法がわかりません

使用しているバージョンについては
  Oracleは9i
  ODP.NETは9.2.0.401です

ご教授宜しくお願いします。
かずぴー
会議室デビュー日: 2004/08/20
投稿数: 2
投稿日時: 2004-08-20 03:01
すみません、C#でのサンプルですが…手続きとしては同じだと思います。
Output属性のバインドパラメータ設定と取得方法を知りたいとの事ですので、他の手続きは省略してあります。

参考になれば…投稿してる環境で試してないので間違ってるかも(汗)

--------------
-- PL/SQL
--------------
CREATE PACKAGE test_pkg AS
TYPE text_t IS TABLE OF VARCHAR(20) INDEX BY BINARY_INTEGER;
PROCEDURE test(
p_array OUT test_t);
END test_pkg;

// ------------------
// C#
// ------------------
OracleCommand cmd = new OracleCommand();
OracleParameter param = new OracleParameter();

param.ParameterName = "test_p";
param.OracleDbType = OracleDbType.Varchar2 ;
param.Value = DBNull.Value ; // null(VB では Nothing)でも良い
param.CollectionType = OracleCollectionType.PLSQLAssociativeArray; // これは必ず指定
param.ArrayBindSize = new int[]{20, 20, 20}; // 配列要素ごとのサイズを指定(Varchar2など可変長データのみ)
param.Size = 3 ; // 予想される配列の最大要素数

cmd.Parameters.Add(param);

string StoredProc = "BEGIN test_pkg.test( p_array => :test_p ); END;";

cmd.CommandText = StoredProc ;
cmd.ExecuteNonQuery();

string[] result = (string[])param.Value ; // VBってキャスト出来たっけ?


[ メッセージ編集済み 編集者: かずぴー 編集日時 2004-08-20 03:09 ]
1

スキルアップ/キャリアアップ(JOB@IT)