我一直在测试出现故障的过程中,我意识到这个问题是在不被拖欠的程序价值传递Null值...默认为空值不为空
Create Procedure TestVarcharMaxIsNull
(@myVar varchar(MAX) = '')
as
Select 'Hello' Where @myVar Is Null
Go
Exec TestVarcharMaxIsNull Null
Go
Exec TestVarcharMaxIsNull ''
Go
Exec TestVarcharMaxIsNull
Go
Drop Procedure TestVarcharMaxIsNull
输出
Run 1 - "hello"
Run 2 - ""
Run 3 - ""
我认为空值默认为值在存储过程中参数被分配到,但是这表明如果它存在,因为它需要你在传递值的参数。有没有在SQL设置可以改变这种行为的服务器?