- - PR -
ODPを使用してPL/SQLの連想配列を受け取る方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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でも使えるような方法をご存知の方はいらっしゃいませんでしょうか? よろしくお願いします。 |
|
投稿日時: 2008-07-17 02:16
確か PL/SQL連想配列 のサポートは ODP.NET 9.2.0.4 からだったと思います。
それ以前のバージョンではサポートされていないので、やり方を変えないとできません。 マイナーバージョンアップですが、クライアントのアップデートは難しいですか? _________________ かるあ のメモ と スニペット |
|
投稿日時: 2008-07-17 23:06
かるあさん。
ご指摘ありがとうございます。 見事に、うまく行きました。 今回は、データベースアクセスは、サーバー上だけでクライアントでは 行わないので、マイナーバージョンアップは問題になりませんでした。 おかげさまで、助かりました。 ありがとうございます。 |
1