Возникновение ошибок на SQL сервере (команда THROW) с условием IF - SQL Server - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь обновить свой сценарий из команды RAISERROR до команды THROW. Я нахожусь в состоянии оператора IF, и если условие истинно, выдается ошибка. Для команды RAISEERROR у меня нет проблем, однако при переходе на команду THROW это невозможно.

RAISERROR команда:

CREATE OR ALTER PROCEDURE Auction.uspAddProductToAuction
    (@ProductID INT,
     @ExpireDate DATETIME = NULL,
     @InitialBidPrice MONEY = NULL) 
AS
    DECLARE @IND_ADD_PRODUCT TINYINT
    SET @IND_ADD_PRODUCT = 1

    IF ([Auction].[ufnGetStock](@ProductID) = 0) --> true
    BEGIN
        SET @IND_ADD_PRODUCT = 0
        RAISERROR ('The product is not in auction campaign discount or a product was not inserted', 1, 0)
    END

THROW команда:

CREATE OR ALTER PROCEDURE Auction.uspAddProductToAuction
    (@ProductID INT,
     @ExpireDate DATETIME = NULL,
     @InitialBidPrice MONEY = NULL) 
AS
    DECLARE @IND_ADD_PRODUCT TINYINT
    SET @IND_ADD_PRODUCT = 1

    IF ([Auction].[ufnGetStock](@ProductID) = 0) --> true
    BEGIN
        SET @IND_ADD_PRODUCT = 0
        THROW 50001, 'The product is not in auction campaign discount or a product was not inserted', 0 
    END

Я получаю эту ошибку:

Сообщение 102, Уровень 15, Состояние 1, Процедура uspAddProductToAuction, Строка 14 [Стартовая строка 180]
Неверный синтаксис около 'БРОСА'

Заранее спасибо

1 Ответ

2 голосов
/ 12 апреля 2020

Замечания За оператором перед оператором THROW должен следовать символ точки с запятой (;).

SET @IND_ADD_PRODUCT = 0;--<--!!
THROW 50001, 'The product is not in auction campaign discount or a product was not inserted',0;
END
...