SQL-server存储过程传参匹配问题,紧急求助,解答疑惑~
create proc testok
@proveID int ,
@confirmProveID int
as
select * from orders where
(proveID=@proveID or @proveID is null or @proveID ='') and
(confirmProveID=@confirmProveID or @confirmProveID is null or @confirmProveID ='')
go
例如上面的存储过程 exec testok 0,0
结果显示:全部查询出来了
看来存储过程把@proveID 和@confirmProveID 都为空‘’查询出的结果返回的
虽然我有解决办法,但是很麻烦。
因为这个表 增加的时候,默认proveID 和confirmProveID 为0,只要改为默认为-1即可
但我不明白的是为什么会把0编译成空,有没有别的有效方法
因为这是多列交互查询,所以 @proveID ='' 还得必须存在