我正在编写winform应用程序,我在我的数据网格中调用过程。 我有定义过程参数的方法
public int Add_Nastavenie(out int typNastav, int nastavID, string hod)
{
ResetParameters();
cmd.CommandText = "add_Nastav";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter sqlParameter;
var sqlParameterOut = new SqlParameter("@TypNastav", SqlDbType.Int);
sqlParameterOut.Direction = ParameterDirection.Output;
sqlParameter = new SqlParameter("@NastavenieID", SqlDbType.Int);
sqlParameter.Direction = ParameterDirection.Input;
sqlParameter.Value = nastavID;
cmd.Parameters.Add(sqlParameter);
sqlParameter = new SqlParameter("@Hodnota", SqlDbType.NVarChar, 100);
sqlParameter.Direction = ParameterDirection.Input;
sqlParameter.Value = hod;
cmd.Parameters.Add(sqlParameter);
var sqlParameterRet = new SqlParameter("retValue", SqlDbType.Int);
sqlParameterRet.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
typNastav = (int)sqlParameterOut.Value;
return (int)cmd.Parameters["retvalue"].Value;
}
然后我用这种方式调用程序
dataConnector.Add_Nastavenie(typNastav,nastavID,hod);
我有错误参数1必须通过' out'关键字
我将其更改为dataConnector.Add_Nastavenie(输出typNastav,nastavID,hod);
错误消失但应用程序无法正常工作,程序无效。
我的尝试捕获异常显示:过程或功能' add_Nastav'期望参数' @ TypNastav',这是未提供的。
有人可以帮忙找到解决方案吗?谢谢 。
答案 0 :(得分:5)
您尚未添加存储过程所期望的OUTPUT
参数:
cmd.Parameters.Add(sqlParameterOut);
答案 1 :(得分:1)
示例:
SqlCommand com = new SqlCommand("update_outptu_Stock", connect.con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@cg_id ", 1);
SqlParameter par = new SqlParameter("@id", SqlDbType.Int)
{
Direction = ParameterDirection.Output
};
SQL:
Create proc update_outptu_Stock
@cg_id int,
@id int output
as
begin
insert into example(cg_id) values (@cg_id)
set @id = SCOPE_IDENTITY() -- get value of id created
end
Go
获取参数ID:
var parvalue = id.value;