- - PR -
odp.net、c#、PLSQL
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-04-18 00:08
以下の件についてお尋ね致します。
現在、C#、ORACLE10gにてPLSQLを呼び、そのPLSQLより配列のパラメータを受け取る プログラムを作成しています。 OracleParameter prmHikiateBusoku = cmd.Parameters.Add("o_HikiateBusoku", OracleDbType.Char,2); prmHikiateBusoku.Direction = ParameterDirection.Output; prmHikiateBusoku.Size = paramSize; prmHikiateBusoku.ArrayBindSize = new int[paramSize]; prmHikiateBusoku.CollectionType = OracleCollectionType.PLSQLAssociativeArray; prmHikiateBusoku.Value = DBNull.Value ; cmd.ExecuteNonQuery(); 上記のようにOUTの配列パラメーターを設定し実行まではうまくいきましたが OUTの配列パラメーターを受け取り、1行ごとにデータを受け取るところが わかりません。 どなたかわかる方教えて頂きたいのですが? | ||||
|
投稿日時: 2005-04-18 23:47
ここに示してあるのは、C#ですよね。PL/SQLでの定義は、どうなっているのでしょう?両方が一致しないと、とれるものもとれないと思いますが、いかがでしょう?
それで、ODP.NETに付属…だったかな?サイトに置いてあったかな?サンプルは一通り目を通しましたか?また、この会議室の上に、「スレッドディレクトリ」というリンクがありますが、そこは目を通しましたか? 何度か出ている問題のような気がします。 _________________ | ||||
|
投稿日時: 2005-04-19 00:50
Jittaさん、ありがとうございます。
定義は以下のようにC#とPLSQLであわせてあります。 CREATE OR REPLACE PACKAGE AAA TYPE HikiateBusoku is table of CHAR(2) index by BINARY_INTEGER; FUNCTION FncBBB ( o_HikiateBusoku OUT HikiateBusoku ) 実際に実行して正常に返ってくるのでロジックは合っていると思います。 サンプルは見ましたが、該当するサンプルはありませんでした。 Jittaさんのおしゃっている「スレッドディレクトリ」を みてみたいのですが、どこにあるのかわかりません。 すいませんが、教えて頂けないでしょうか? | ||||
|
投稿日時: 2005-04-19 10:06
こんにちわ。
o_HikiateBusokuの値が取りたいということでしょうか。 配列でない引数と同じで、OracleCommand.Parameters(Index).ValueにOUT引数で取得できますよ。 Valueの中に配列の情報?が格納されていると思います。 Valueを他の配列にキャストするとどうでしょうか? _________________ | ||||
|
投稿日時: 2005-04-19 15:17
トージさんありがとうございます。
以下のように string[] argHikiateBusoku = (string[])prmHikiateBusoku.Value; 変数に代入しようとしましたが「指定されたキャストは有効ではありません。」 のエラーになってしまいます。 また prmHikiateBusoku(i).Value.ToString() のようにも行いましたがコンパイルがとおりません。 コーデングで何か問題があるのでしょうか? | ||||
|
投稿日時: 2005-04-19 19:25
> みてみたいのですが、どこにあるのかわかりません。
これは、どの情報が該当するかわからなかったという意味でしょうか?それとも、「スレッドディレクトリ」のリンクがどこにあるのか、わからなかったということでしょうか? 後者なら、スレッド一覧に戻ると、「新しいスレッド」のリンクの下にあります。 前者なら、 ディレクトリ > データベース > Oracle こうたどると、Oracle関係のものが並んでいます。 「pl sql 引数 配列」の「すべてを含む」をキーにして、Insider.NET会議室を検索してみてください。たぶん、これで解決できるのではないかと思います。検索のリンクは、右上の方に小さくあります。 _________________ | ||||
|
投稿日時: 2005-04-20 11:51
例外ですね。 私はOracleStringの配列には格納してから、Objectの配列に格納しています。 他にいい方法をご存知の方がいらっしゃったら、教示していただきたいです。 _________________ | ||||
1
