Исключение T-SQL Throw

Я сталкиваюсь с известным «неправильным синтаксисом» при использованииTHROW оператор в хранимой процедуре T-SQL. Я его погуглил и проверил вопросы по StackOverflow, но предложенные решения (и, как ни странно, принятые) не работают для меня.

Я изменяю хранимую процедуру следующим образом:

ALTER PROCEDURE [dbo].[CONVERT_Q_TO_O]
    @Q_ID int = NULL,
    @IDENTITY INT = NULL OUTPUT
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @EXISTING_RECORD_COUNT [int];

    SELECT
        @EXISTING_RECORD_COUNT = COUNT (*)
    FROM
        [dbo].[O]
    WHERE
        [Q_ID] = @Q_ID

    IF @EXISTING_RECORD_COUNT = 0
    BEGIN
        -- DO SOME STUFF HERE

        -- RETURN NEW ID
        SELECT @IDENTITY = SCOPE_IDENTITY()
    END
    ELSE
    BEGIN
         THROW 99001, 'O associated with the given Q Id already exists', 1;
    END
END
GO

Когда я кодирую этот T-SQL, я получаю сообщение об ошибке

Неверное утверждение рядом с 'THROW'. Ожидается ПЕРЕГОВОР, ДИАЛОГ, РАСПРЕДЕЛЕНИЕ или СДЕЛКА

Все решения предлагают ставить точку с запятой либо перед «THROW», либо после «ELSE BEGIN». Когда я изменяю T-SQL, я просто получаюНеверное утверждение рядом с 'THROW'"ошибка и не могу найти решение.

Какие-либо предложения?

Ответы на вопрос(7)

Ваш ответ на вопрос