我在 SQL Server 2005 中有一个存储过程,它接受一些 BigInt 和 Number(18,2) 类型的参数。
数据库表中有一列ApprovedAmount,类型为:Number(18,2)。
从 C# (VS-2005) 调用此存储过程时,我使用的代码如下:
SQLCommand cmd = new SQLCommand(Query, CN)
cmd.Parameters.AddWithValue("ApprovedAmount",txtApprovedAmount.Text);
上面的参数行报错:Cannot convert from String to Numeric..
我觉得把上面这行写成下面这样很痛苦,因为要传递的参数太多了:
cmd.Parameters.AddWithValue("ApprovedAmount", Convert.ToDouble(txtApprovedAmount.Text));
是否有任何简单的方法来传递参数,以便在存储过程本身或 C# 代码中将它们自动转换为适当的数据库表类型?
我还想处理一个情况,如果 TextBox 留空,则参数值应作为 null 传递。
最佳答案
我不推荐它,但我相信您可以让存储过程将 varchar 作为参数,并在存储过程中将其转换为 double。我知道在 Oracle 中某些类型可以隐式转换,所以如果 SQL Server 也这样做,您可能可以忽略所有转换(取决于您的存储过程的作用)。
关于c# - 以适当且简单的方式将数字参数传递给存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7447321/