【发布时间】:2014-12-26 08:57:29
【问题描述】:
我有一个 SQL server 2008。我有数据的表(项目)结构如下:
ID(int) Name(varchar(50)) Price(money)
1 ArchBook 1200.89
2 Freebie 0.00
3 Board 800.54
这些列的数据类型在 () 中。我有一个以价格为参数的选择存储过程
create procedure dbo.GetItemByPrice
@price money
as
begin
if @price = '' OR @price is NULL
set @price = ''
select * from dbo.Items
where @price = '' OR price = @price
end
当我从 C# 代码发送价格为 0 时,结果不正确。在 if 子句之后,我在存储过程中使用 cast 再次将其转换为货币。(How do I convert from a money datatype in SQL server?) 但它似乎不起作用。与 0 相比,我可以如何照顾的任何建议?如果价格为空,则返回所有记录。 C#代码
cnn.Open();
string amount = "0";
var command = new SqlCommand("GetItemsByPrice", cnn);
command.CommandType = CommandType.StoredProcedure;
var param = new SqlParameter("@price", SqlDbType.Money);
param.Value = Convert.ToDecimal(amount);
command.Parameters.Add(param);
var dataReader = command.ExecuteReader();
while (dataReader.Read())
{
//printing columns
}
dataReader.Close();
command.Dispose();
【问题讨论】:
-
检查我的答案,如果对你有帮助,请告诉我。