Я тестировал неисправную процедуру и понял, что проблема в том, что передаваемые значения 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 - ""
Я предположил, что значения NULL по умолчанию соответствуют значению, назначенному в параметре хранимой процедуры, но это показывает, что если оно существует в качестве параметра, оно принимает значение, которое вы передаете. Есть ли в SQL-сервере параметр, который может изменить это поведение?