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

わんくま同盟

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

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


(過去ログ 145 を表示中)
■84838 / )  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);
    }
}
--------------------------------------------------


返信 編集キー/


管理者用

- Child Tree -