如何在c#中从sql返回输出参数
本文关键字:返回 输出 参数 sql 中从 | 更新日期: 2023-09-27 18:00:28
嗨,我在存储过程中定义了一个输出参数,我的sp如下
createproc [dbo].[convertempID](@empid int,@totcnt varchar(4) output)
as
begin
select @totcnt = right('00000'+convert(varchar(6), empID), 4)
from tblEmployee
where empID = @empid;
end
当我执行这个时,我得到的结果是@totcnt
的0015
,但当我在c#代码中调用这个时,得到的是15
而不是0015
,有人能告诉我哪里出错了吗
cmd.CommandText = "convertempID";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@empid", 15);
cmd.Parameters.Add(new SqlParameter("@totcnt", SqlDbType.Int));
cmd.Parameters["@totcnt"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
sring ans = cmd.Parameters["@totcnt"].Value.ToString();
这就是问题所在:
cmd.Parameters.Add(new SqlParameter("@totcnt", SqlDbType.Int));
将其与存储过程中的声明进行比较:
@totcnt varchar(4) output
将参数类型更改为SqlDbType.VarChar
,它应该可以工作。目前,该值实际上是整数15,而不是字符串"0015"。
您已将参数类型指定为Int
,Int
的0015
和15
之间没有差异。将参数行更改为:
cmd.Parameters.Add(new SqlParameter("@totcnt", SqlDbType.VarChar));
返回值类型必须与类型匹配:
尝试替换
cmd.Parameters.Add(new SqlParameter("@totcnt", SqlDbType.Int));
带有
cmd.Parameters.Add(new SqlParameter("@totcnt", SqlDbType.VarChar));
将totcnt类型从int更改为varchar