シンプルな SQL Server ストアド プロシージャがあります。
ALTER PROCEDURE GetRowCount
(
@count int=0 OUTPUT
)
AS
Select * from Emp where age>30;
SET @count=@count+@@ROWCOUNT;
RETURN
次の C# コードで、出力パラメーターを初期化してアクセスしようとしています。
SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=answers;Integrated Security=True";
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "GetRowCount";
cmd.Parameters.Add(new SqlParameter("@count", SqlDbType.Int));
cmd.Parameters["@count"].Direction = ParameterDirection.Output;
con.Open();
cmd.Parameters["@count"].Value=5;
cmd.ExecuteNonQuery();
int ans = (int)(cmd.Parameters["@count"].Value);
Console.WriteLine(ans);
しかし、コードを実行すると、コードのInvalidCastException
最後の 2 行目で an がスローされます (Value 属性に何も返されないことをデバッグして確認しました)。
コードで出力パラメータを正しく初期化するにはどうすればよいですか? 前もって感謝します!