【发布时间】:2016-01-01 05:08:51
【问题描述】:
我在 SQL Server 中使用函数并返回 RESULT 小数的存储过程。
在 C# 中我需要得到它,但我得到一个错误:
“INVALLD CastEXCEPTION 未被用户代码处理”“异常 类型'system.invaildCastException'发生...'
我的 C# 代码:
decimal? val = null;
SqlConnection con = new SqlConnection(conStr);
con.Open();
using (con)
{
SqlCommand cmd = new SqlCommand("dbo.spSetOrderDetails", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter tvpParam = cmd.Parameters.AddWithValue("@OrderDetailsItemsTVP", dt);
tvpParam.SqlDbType = SqlDbType.Structured;
// this part of code return the SUM
SqlParameter returnParam = cmd.Parameters.Add("@RESULT", SqlDbType.Decimal);
returnParam.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
val = (decimal)cmd.Parameters["@RESULT"].Value;--HERE I GET THE EXCEPTION
}
con.Close();
return (decimal)val;
【问题讨论】:
-
cmd.Parameters["@RESULT"].Value 可能为 NULL,您不能将 NULL 转换为不可为空的十进制数。
-
你不能 带方向 ReturnValue 的参数是 T-SQL 中 RETURN 语句的值,该值只能是整数
标签: c# sql sql-server asp.net-mvc asp.net-mvc-4