Почему бы вам сначала не запросить эту строку и дважды проверить, действительно ли ErrorDesc содержит значение:
SELECT ErrorDesc WHERE RecID=@RecID
Что это возвращает?Если NULL, то проблем нет.
CREATE PROCEDURE usp_InvoiceErrorLog
@RecID int
AS
DECLARE @ErrorString as varchar(1000)
DECLARE @ErrorCode as int
Select @ErrorCode = (SELECT ErrorCode from tbl_AcctRecv_WebRpt Where RecID = @RecID)
IF (@ErrorCode IS NOT NULL)
Begin
--its NOT NULL
Select @ErrorString = (SELECT ErrorDesc from tbl_ErrDesc Where ErrorCode = @ErrorCode)
End
--optional it IS NULL
ELSE
BEGIN
SELECT @ErrorString = (SELECT 'It Doesnt Contain Anything!')
END
Select
RecID,
VendorNum,
VendorName,
InvNum,
InvTotal,
(SELECT CONVERT(VARCHAR(11), InvDate, 106) AS [DD MON YYYY]) As InvDate,
TicketRequestor,
ErrorCode,
@ErrorString as ErrorDesc
FROM
tbl_AcctRecv_WebRpt
Where
RecID = @RecID
END
Это работает для меня.Посмотрите на ваше условие if: IF NOT(@ErrorCode = NULL)
и посмотрите на мое IF (@ErrorCode IS NOT NULL).
Вы хотите использовать НЕ, ИЛИ ЕСТЬ, а не = при работе с NULL