C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

oracleプロシージャ実行の例外エラー

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■84838 / inTopicNo.1)  oracleプロシージャ実行の例外エラー
  
□投稿者/ うみ (7回)-(2017/08/07(Mon) 16:13:54)

分類:[C#] 

お世話になります。

初心者なため、文中に不都合がありましたら申し訳ありません。

【環境】
OS    :Windows8.1Pro
C#    :VisualStudio2015
Oracle:11g

以下メソッドが、ボタンクリックで実行されます。
1回目ボタンクリックは正常に終了し、TextBox1に値が設定されますが、
2回目ボタンクリックでは、「cmd.ExecuteNonQuery();」を実行のタイミングで、
例外エラーとなり、Catchが実行され、
「オブジェクトの現在の状態に問題があるため、操作は有効ではありません。」
と表示されます。

宜しくお願いいたします。

--------------------------------------------------
using Oracle.ManagedDataAccess.Client;

// conn:コネクション済みのOracleConnection
private void method_hoge(OracleConnection conn)
{
    try{
        // コマンドを作成
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.BindByName = true;

        // プロシージャ
        cmd.CommandType = CommandType.StoredProcedure;

        // プロシージャ名
        cmd.CommandText = "Proc_Hoge";

        // 入力
        OracleParameter P_FUGA = new OracleParameter("P_FUGA", OracleDbType.Varchar2);
        P_FUGA.Direction = ParameterDirection.Input;
        P_FUGA.Value = "fuga";
        cmd.Parameters.Add(P_FUGA);

        // 出力
        cmd.Parameters.Add(new OracleParameter("P_PIYO", OracleDbType.Decimal));
        cmd.Parameters["P_PIYO"].Direction = ParameterDirection.Output;

        // プロシージャ実行
        cmd.ExecuteNonQuery();

        // 実行結果を表示
        TextBox1.Text = cmd.Parameters["P_PIYO"].Value.ToString();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
--------------------------------------------------


引用返信 編集キー/
■84839 / inTopicNo.2)  Re[1]: oracleプロシージャ実行の例外エラー
□投稿者/ furu (114回)-(2017/08/07(Mon) 16:40:51)
No84838 (うみ さん) に返信

cmdは破棄しないんですか?

using使ったほうがいいですよ。
引用返信 編集キー/
■84841 / inTopicNo.3)  Re[1]: oracleプロシージャ実行の例外エラー
□投稿者/ kaina (29回)-(2017/08/07(Mon) 16:48:15)
こんにちは。

意地悪な言い方すると宜しくお願いされても質問文が無いから
答えようがありません。
とまあ、言われてしまいますので、きちんと質問文の形式で書くようにしましょうね。

では、本題ですが、1回目と2回目でそれぞれデバッグを行い、
connの値を確認してみて下さい。

1回目の処理の後、OracleConnectionが破棄されていませんか?

引用返信 編集キー/
■84842 / inTopicNo.4)  Re[1]: oracleプロシージャ実行の例外エラー
□投稿者/ うみ (8回)-(2017/08/07(Mon) 17:06:17)
furu様、kaina様

kaina様のご指摘いただいたとおり、2回目処理時は、
OracleConnectionが破棄されていました。

また、その他ご指摘いただいた点につきましては、
今後の参考、注意させていただきます。

ご教授いただきありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ