T-SQL-Throw-Ausnahme

Ich bin mit der berühmten "falschen Syntax" konfrontiert, während ich ein @ benutzTHROW -Anweisung in einer gespeicherten T-SQL-Prozedur. Ich habe es gegoogelt und die Fragen zu StackOverflow überprüft, aber die vorgeschlagenen (und seltsamerweise akzeptierten) Lösungen funktionieren bei mir nicht.

Ich ändere eine gespeicherte Prozedur wie folgt:

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

Wenn ich diese T-SQL codiere, erhalte ich die Fehlermeldung

Incorrect statement near 'THROW'. Erwarten von CONVERSATION, DIALOG, DISTRIBUTED oder TRANSACTION

Alle Lösungen schlagen vor, ein Semikolon vor 'THROW' oder nach 'ELSE BEGIN' zu setzen. Wenn ich die T-SQL ändere, erhalte ich einfach das "Incorrect statement near 'THROW' "Fehler und kann anscheinend keine Lösung finden.

Irgendwelche Vorschläge

Antworten auf die Frage(7)

Ihre Antwort auf die Frage