2013-05-08 1 views
0

je le code suivant:SQL Server Si-LaVariable Présence non déclarée de

CREATE FUNCTION db_owner.GetComp 
(
    @CompID bigint, 
    @ComponentType nvarchar(50) 
) 
RETURNS TABLE 
AS 
    RETURN /* SELECT ... FROM ... */ 

    IF (@ComponentType = 'WMCOMP') begin 

     RETURN 

     SELECT * 
     FROM WMCOMP 
     WHERE wmcompid = @CompID 

    end 
    ELSE IF (@ComponentType = 'ADECOMP') begin 

     RETURN 

     SELECT * 
     FROM ADECOMP 
     WHERE adecompid = @CompID 

    end 

Lorsque vous essayez de l'enregistrer dans Visual Studio, l'erreur suivante apparaît:

syntaxe incorrecte près IF

Je ne peux tout simplement pas voir ce qui ne va pas. Toute aide serait appréciée.

Répondre

2

Essayez celui -

CREATE FUNCTION db_owner.GetComp 
(
     @CompID bigint 
    , @ComponentType nvarchar(50) 
) 
RETURNS @Result TABLE (col1 INT, ...) 
AS 
BEGIN 

    INSERT INTO @Result (col1, ...) 
    SELECT * 
    FROM (
     SELECT * 
     FROM dbo.WMCOMP 
     WHERE wmcompid = @CompID 
      AND @ComponentType = 'WMCOMP' 

     UNION ALL 

     SELECT * 
     FROM dbo.ADECOMP 
     WHERE adecompid = @CompID 
      AND @ComponentType = 'ADECOMP' 
    ) f 

    RETURN 

END 
+0

Merci, cela a fonctionné – Niclassg

+0

Vous êtes les bienvenus @Niclassg. – Devart

2

Vous avez une virgule manquante dans la liste des param:

CREATE FUNCTION db_owner.GetComp 
(
    @CompID bigint, --<--- need a comma here 
    @ComponentType nvarchar(50) 
) 
+0

Merci, je changé et je reçois maintenant une nouvelle erreur. J'ai mis à jour ma question – Niclassg

+0

enlever les déclarations de retour à l'intérieur du début - fin .... –

+1

BTW: éditer une question pour enlever le problème original n'est pas la meilleure manière de poser des questions. Sinon, les réponses peuvent ne pas avoir de sens sur la piste ... –

Questions connexes