J'essaie d'envelopper une fonction simple dans une vérification d'existence, pourquoi est-ce que j'obtiens une syntaxe incorrecte?
actualisé:
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
Erreur suivante: Msg 156, niveau 15, état 1, ligne 10 Syntaxe incorrecte près du mot clé "FUNCTION". Msg 178, niveau 15, état 1, ligne 19 Une instruction RETURN avec une valeur de retour ne peut pas être utilisée dans ce contexte.
Réponses:
5 pour la réponse № 1GO
est un séparateur par lots.
GO est une commande reconnue par les utilitaires sqlcmd et osql qui envoient des commandes au moteur SQL, le SQL n'est pas valide.
Sortez tous les GO
s sauf à la toute fin.
Un exemple plus simple qui échouera également:
IF 1=1
BEGIN
SELECT "FOO"
GO
END
Tous vos paramètres doivent être au tout début du script, car ils persisteront pendant toute la durée de la session.