Меня смущает строка кода.
IF @StatusCode = '71'
BEGIN
SET @VarA = Isnull(@VarC, @VarD)
Каким будет результат для VarA в обоих случаях, когда VarC равно нулю, а не нет?
Также обратите внимание, что результат в @VarA будет зависеть от его объявленного типа данных. Результат IsNull, если его тип данных отличается от типа данных @VarA, будет подвержен неявное преобразование типа.





ISNUL - это альтернатива для установки значений, которые равны нулю альтернативному значению, как в вашем случае Isnull(@VarC, @VarD), если @VarC имеет значение NULL, тогда значение будет @var_d иначе @VarC сам
Функция ISNULL () позволяет вам возвращать альтернативное значение, когда выражение равно NULL.
если @VARC не равен нулю, @VarA = @VARC.
Если @VARC равен нулю, @VarA = @VarD.
Эти два кода эквивалентны
SET @VarA = Isnull(@VarC, @VarD)
и
if @VarC is not null
set @VarA = @VarC
else
set @VarA = @VarD
Есть ли какая-то часть документации для
IsNull, с которой у вас возникли проблемы? Вы читали раздел о возвращаемые типы и следующий за ним раздел примечаний?