🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

5145閲覧

関数だけを修正してOracleDataReaderからデータを取得したい

kyonshi_man

総合スコア7

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/10/02 02:20

編集2019/10/03 00:54

前提・実現したいこと

VB.NETで、oo4oからodp.netへの移行作業で、関数を修正しています。
実行した所、途中までは取得できているのですが、その後「列挙は結果を生成しませんでした。」となり
取得が失敗します。
修正箇所は少なくしたいので、関数だけを修正して動作するようにしたいです。
色々調べて修正しましたがうまくいきませんでした。
宜しくお願いいたします。

発生している問題・エラーメッセージ

途中まではデータを取得できているが、その後「列挙は結果を生成しませんでした。」となり
取得が失敗する

該当のソースコード

[VB.NET] -----省略------ clsCommand.Connection = clsDatabase clsCommand.CommandText = SQL ←この行は実行できていて、SQLの実行結果がvalueに入っている CreateRecordset = clsCommand.ExecuteReader ←この行で実行すると「列挙は結果を生成しませんでした。」が発生 ・関数実行後は、同じOracleDataReaderの型の変数に代入

試したこと

・CreateRecordsetの型をObjectからOracleDataReaderに変更して、代入先と同じ型にした

補足情報(FW/ツールのバージョンなど)

Visual Studio 2017

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KOZ6.0

2019/10/02 02:48

どのような SQL を実行したときエラーが発生しますか?
kyonshi_man

2019/10/03 00:51

単純なselect文で、SQL文は問題なく実行できている事を確認しています。
KOZ6.0

2019/10/03 02:01

ということは「列挙は結果を生成しませんでした。」というエラーが出ているのは CreateRecordset = clsCommand.ExecuteReader の行ではないのですね?
KOZ6.0

2019/10/03 03:27

OracleCommand.CommandText に SQL を代入しても SQL は実行されません。 また value プロパティもありません。 clsCommand って、OracleCommand ではなく、kyonshi_man さんが作られたクラスなのでしょうか?
Zuishin

2019/10/04 02:44 編集

スカラー値を返す SQL を実行しているだけの気がします。
KOZ6.0

2019/10/04 07:37

「単純な select 文」って書かれてますし、関数を出た後、間違った使い方をしているように思います。 修正前のコードを貼ってもらったほうが、たぶんアドバイスしやすいです。
kenshirou

2019/10/04 10:18

単純なSQLということであれば、私も「SELECT COUNT(*) AS cnt...」のようなスカラ返却SQLに1票ですね。
KOZ6.0

2019/10/04 11:21

単項目の1件な SQL であれば普通に ExecuteReader で値を取得できます。 INSERT や UPDATE など更新クエリも実行できますよ。
kyonshi_man

2019/11/15 06:48

返信が遅くなり申し訳ありません。 clsCommandは変数名で、OracleCommandです。 ご指摘通り、OracleCommand.CommandTextでSQLが実行されて結果が入っていると勘違いしていました。 そして、再度ソースを見直した所、関数を出た後のRead()メソッドの使い方が間違っていて oo4o→ODP.NETへの変更で、不要になる関数ができて、それを使用したままだったのが原因でした。 以前に作成された方やシステムに詳しい方は既におられなかったので、聞ける方がいなくて ずいぶんと時間がかかってしまいました。 皆さん本当にありがとうございました。
guest

回答1

0

自己解決

返信が遅くなり申し訳ありません。
clsCommandは変数名で、OracleCommandです。

ご指摘通り、OracleCommand.CommandTextでSQLが実行されて結果が入っていると勘違いしていました。
そして、再度ソースを見直した所、関数を出た後のRead()メソッドの使い方が間違っていて
oo4o→ODP.NETへの変更で、不要になる関数ができて、それを使用したままだったのが原因でした。
以前に作成された方やシステムに詳しい方は既におられなかったので、聞ける方がいなくて
ずいぶんと時間がかかってしまいました。
皆さん本当にありがとうございました。

投稿2019/11/15 06:50

kyonshi_man

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問