/ / SQL-Skript benötigt, wenn Anweisung umgebrochen - SQL-Server, Tsql

SQL-Skript benötigt, wenn Anweisung verpackt - SQL-Server, Tsql

Ich versuche, eine einfache Funktion in einen Check für die Existenz zu wickeln, warum bekomme ich falsche Syntax?

aktualisiert:

GO

IF EXISTS (SELECT TOP 1 * FROM Customers)
BEGIN
USE [rstestDB]

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

CREATE FUNCTION [dbo].[udf_GetName]
(
@p1 nvarchar(25)
)
RETURNS varchar
AS
BEGIN
DECLARE @Result varchar(25)
SELECT @Result = "John Doe"
RETURN @Result
END
END
GO

Folgender Fehler wird angezeigt: Msg 156, Ebene 15, Staat 1, Linie 10 Falsche Syntax in der Nähe des Schlüsselwortes "FUNCTION". Msg 178, Ebene 15, Staat 1, Zeile 19 Eine RETURN-Anweisung mit einem Rückgabewert kann in diesem Kontext nicht verwendet werden.

Antworten:

5 für die Antwort № 1

GO ist ein Batch-Separator.

GO ist ein Befehl, der von den Dienstprogrammen sqlcmd und osql erkannt wird, die Befehle an die SQL-Engine senden, es ist kein gültiges SQL.

Nimm alle raus GOs bis auf das Ende.

Ein einfacheres Beispiel, das ebenfalls fehlschlägt:

IF 1=1
BEGIN
SELECT "FOO"
GO
END

Alle Ihre Einstellungen sollten wirklich am Anfang des Skripts stehen, da sie für die Dauer der Sitzung beibehalten werden.