如何在 TRY CATCH 中结合使用 THROW 和测试值?

How can I use THROW combined with testing values in a TRY CATCH?

我这样编码:

BEGIN TRY

SELECT @TestUserId = UserId,
       @TestCreatedBy = CreatedBy
FROM   UserTest
WHERE  UserTestId = @UserTestId

IF ( @TestUserId != @UserId & @TestCreatedBy != @UserID)
BEGIN
   THROW 50000,'THROW TEST',1
END

END TRY
BEGIN CATCH
   SET @RC = 1
   SET @ErrorMessage = ERROR_MESSAGE()
   RETURN
END CATCH

我对以 IF 开头的行有疑问。它给出了一个错误说:

! - Incorrect syntax

THROW 行也显示错误

有人可以告诉我如何正确地抛出和错误以及如何捕获它。我可以捕获特定于 50000 代码的块吗?

我希望 @UserId 在某处定义。问题出在 & - 将其替换为 AND.

试试这个

BEGIN TRY

SELECT @TestUserId = UserId,
       @TestCreatedBy = CreatedBy
FROM   UserTest
WHERE  UserTestId = @UserTestId

IF ( @TestUserId != @UserId AND @TestCreatedBy != @UserID)
BEGIN
   raiserror('THROW TEST',16,1)
END

END TRY
BEGIN CATCH
   SET @RC = 1
   SET @ErrorMessage = ERROR_MESSAGE()
   RETURN
END CATCH