我有一个C#应用程序,它将参数发送到以下存储过程:
@Lot nchar (112)= NULL,
@Oper nchar (112)= NULL
SELECT [Lot].Lot,
lot.Oper
FROM DB
where (@Lot is null or ( Lot= @Lot))
and (@Oper is null or ( Oper= @Oper))
如果我在申请表中留空,我无法获得任何结果。
答案 0 :(得分:0)
我的猜测是你的应用程序肯定是一个“空白”字段将是一个空字符串。最有可能的是,您的代码将获取该空白字符串并将其作为参数传递给存储过程。因此,您的默认值(NULL
)未使用,而@Lot
和/或@Oper
的值为''
。
如果是这种情况,那么您的SELECT
查询就是有效的:
select ...
from DB
where Lot = ''
and Oper = '';
在传递参数值之前检查空字符串,如果是这种情况,则只是不要将这些参数传递给存储过程。或者在后端处理(这不是我的第一选择,但它仍然是一个选项)。