|
分類:[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);
}
}
--------------------------------------------------
|