- PR -

ODPを使用してPL/SQLの連想配列を受け取る方法

1
投稿者投稿内容
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2008-07-15 00:18
VisualStudio2005 C#で、Oracle Data Provider for .NETを使用して、
PL/SQL呼び出しの機能を開発しています。

PL/SQLの連想配列を出力パラメータに定義して、これをC#のコード
で受けるときに、C#側では、以下のような記述を行うと思います。
(パラメータ定義部分のみです)

mySQLCommand.Parameters.Add(new OracleParameter("SyouhinCD", OracleDbType.Varchar2));
mySQLCommand.Parameters["SyouhinCD"].DbType = DbType.String;
mySQLCommand.Parameters["SyouhinCD"].Direction = System.Data.ParameterDirection.Output;
mySQLCommand.Parameters["SyouhinCD"].CollectionType = OracleCollectionType.PLSQLAssociativeArray;
mySQLCommand.Parameters["SyouhinCD"].Value = DBNull.Value;
mySQLCommand.Parameters["SyouhinCD"].Size = 6;
mySQLCommand.Parameters["SyouhinCD"].ArrayBindSize = new int[6] { 6, 6, 6, 6, 6, 6 };

これは、Varchar2(6)の項目の連想配列の要素を6つ受け取るときの、パラメータ
定義のつもりです。

実際に、期待したとおりの結果が得られたのですが、一部ODPのバージョンが9の
システムがありまして、同様に記述したところ、

OracleCollectionType.PLSQLAssociativeArray

この記述のところで、コンパイルエラーになってしまいました。

どうやら、この設定がVer9では存在しないようなのですが、Ver9で同様の
処理は、実現できないものなのでしょうか?

どなたか、Ver9でも使えるような方法をご存知の方はいらっしゃいませんでしょうか?

よろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2008-07-17 02:16
確か PL/SQL連想配列 のサポートは ODP.NET 9.2.0.4 からだったと思います。
それ以前のバージョンではサポートされていないので、やり方を変えないとできません。
マイナーバージョンアップですが、クライアントのアップデートは難しいですか?
_________________
かるあ のメモスニペット
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2008-07-17 23:06
かるあさん。
ご指摘ありがとうございます。
見事に、うまく行きました。
今回は、データベースアクセスは、サーバー上だけでクライアントでは
行わないので、マイナーバージョンアップは問題になりませんでした。

おかげさまで、助かりました。
ありがとうございます。
1

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