如何在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

当我执行这个时,我得到的结果是@totcnt0015,但当我在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();

如何在c#中从sql返回输出参数

这就是问题所在:

cmd.Parameters.Add(new SqlParameter("@totcnt", SqlDbType.Int));

将其与存储过程中的声明进行比较:

@totcnt varchar(4) output

将参数类型更改为SqlDbType.VarChar,它应该可以工作。目前,该值实际上是整数15,而不是字符串"0015"。

您已将参数类型指定为IntInt001515之间没有差异。将参数行更改为:

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