Я столкнулся с известным "Неправильным синтаксисом" при использовании инструкции THROW
в хранимой процедуре T-SQL. У меня есть Googled и проверил вопросы по 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", либо после "ELSE BEGIN". Когда я изменяю T-SQL, я просто получаю " Неверный оператор рядом с ошибкой" THROW "" и не может найти решение.
Любые предложения?