gpt4 book ai didi

c# - 如何从输出参数获取值,同时提供一个值作为输入?

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:03 24 4
gpt4 key购买 nike

我在下面的 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;
}

我的SP是:

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

但我收到错误消息:{"Specified cast is not valid."

我想从我的汇率表中获取一种货币的结果。

有没有比使用输出参数方向类型更简单地获得结果的更好方法?

SQL 中的测试结果:

DECLARE @val decimal(16,2)
SET @val = 5
EXECUTE sp_Get_Cur 'EUR', @val output
SELECT @val

Result = 6.76

在 Code Watch 中,我的 cmd.Parameters["@val"].Value; = 5.00;

执行时变为 {} 或 null?

最佳答案

如果您将参数指定为仅输出,它不会将任何值传递给存储过程,因此在该过程中您将除以返回 null 的 null。

像这样改变参数方向:

parm2.Direction = ParameterDirection.InputOutput;

关于c# - 如何从输出参数获取值,同时提供一个值作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com