Что-то не так с передачей пустых значений для значений по умолчанию?
Конечно, это может не сработать в любой ситуации.
Иногда вам может понадобиться узнать, действительно ли фактическое значение равно Null, и поэтому избегайте использования значения по умолчанию.
Если это так, то я бы прибегнул к добавлению дополнительного параметра " Default ".
[Microsoft.SqlServer.Server.SqlProcedure]
public static void MySproc(SqlInt32 pID, SqlBoolean UseDefault_pID)
{
pID = (UseDefault_pID == SqlBoolean.True && pID == SqlInt32.Null)
? SomeDefaultPIDValue : pID;
}
Это избавляет от необходимости писать дополнительные sprocs " wrapper " для получения необязательных параметров со значениями по умолчанию, которые затем вызывают ваш sproc CLR.
Чтобы использовать значение по умолчанию при передаче значения Null: UseDefault_pID = 1
Чтобы сохранить фактическое значение при передаче значения Null: UseDefault_pID = 0