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