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 № 1GO 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 GO
s 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.