如何从输出参数中获取值,同时还提供值作为输入
本文关键字:输入 输出 参数 获取 | 更新日期: 2023-09-27 18:08:47
我在下面使用我的c#代码
cn = new SqlConnection(connetionString);
using (SqlCommand cmd = new SqlCommand("sp_Get_Cur", cn))
{
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parm = new SqlParameter("@cur", SqlDbType.VarChar);
parm.Size = 3;
parm.Value = s_cur;
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);
SqlParameter parm2 = new SqlParameter("@val", SqlDbType.Decimal);
parm2.Direction = ParameterDirection.Output;
parm2.Value = val;
cmd.Parameters.Add(parm2);
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
return (decimal)cmd.Parameters["@val"].Value;
}
my SP is:
ALTER PROCEDURE sp_Get_Cur
@cur VARCHAR(3),
@val decimal(16,2) OUTPUT
AS
BEGIN
DECLARE @rate decimal(16,2)
SELECT @rate = rate FROM exchange_rate WHERE code = @cur
SET @val = @val / @rate
END
但是我得到错误:{"指定的强制转换无效。"}
我想从我的汇率表中得到一种货币的结果。
是否有比输出参数方向类型更容易获得结果的更好方法?
SQL:
DECLARE @val decimal(16,2)
SET @val = 5
EXECUTE sp_Get_Cur 'EUR', @val output
SELECT @val
Result = 6.76
Code Watch, my cmd.Parameters["@val"].Value;
= 5.00;执行时变成{}还是null?
如果您只指定参数作为输出,它将不会向存储过程传递任何值,因此在过程中,您将与返回null的null进行除法。
像这样改变参数方向:
parm2.Direction = ParameterDirection.InputOutput;