Исключение 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'"ошибка и не могу найти решение.
Какие-либо предложения?