c# - 以适当且简单的方式将数字参数传递给存储过程

标签 c# sql-server-2005 stored-procedures c#-2.0

我在 SQL Server 2005 中有一个存储过程,它接受一些 BigIntNumber(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/

相关文章:

c# - 多个表的通用批量更新

c# - C++ 到 C# - 一个小函数

c# - Xamarin - 为 TextView 设置背景颜色和边框

sql - 如何监控我在 SQL Server 上花费了多少时间?

sql - MS SQL 到 Informix 11 - 按转换的日期时间分组

c# - 计算我的 ASP.NET MVC 项目中来自不同部门的相同产品名称的总和

c# - 为什么 SQL 查询不运行?

sql-server-2005 - Excel 中的 ODS 查询返回虚假列名

java - SQLException 参数 #7 尚未设置

oracle - Oracle 上动态 SQL 与存储过程的性能