[SQL] Erreur syntaxe dans fonction

Bonjour,
Quelqu'un voit-il une erreur dans ce code !! car moi je vois pas! Merci
(BASE SQL SERVEUR 2005)

CREATE FUNCTION sf_GetLibStatut
@Num int
RETURNS varchar(15);
AS
BEGIN
Declare @LibStat varchar(15);

Select @LibStat = Lib
FROM TABLE
WHERE IdStatut = @Num;

RETURN @LibStat
END
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Contributeur
    C'est quoi le libellé de l'erreur lorsque tu tente d'exécuter cette fonction ?
    0
    1. Voici la liste des erreurs :

      Msg 102, Niveau 15, État 1, Procédure sf_GetLibStatut, Ligne 7
      Syntaxe incorrecte vers '@Num'.
      Msg 137, Niveau 15, État 2, Procédure sf_GetLibStatut, Ligne 15
      La variable scalaire "@Num" doit être déclarée.
      Msg 137, Niveau 15, État 2, Procédure sf_GetLibStatut, Ligne 17
      La variable scalaire "@LibStat" doit être déclarée.

      Merci de m'aidé.
      0
      1. Contributeur
        Je ne connais pas du tout ce language, mais t'apres ce que j'en comprends je pense qu'il faudrait déclarer tes variables (si ce sont bien des variables ^^) dans la fonction, notament le @num :

        CREATE FUNCTION sf_GetLibStatut
        RETURNS varchar(15);
        AS
        BEGIN
        Declare @LibStat varchar(15);
        Declare @Num int
        
        Select @LibStat = Lib
        FROM TABLE
        WHERE IdStatut = @Num;
        
        RETURN @LibStat
        END


        Ensuite je ne sais pas à quoi correspond le AS, mais en mysql ca sert à définir le libellé d'un champ retourné, donc je ne vois pas trop ce que ca vient faire là, je l'oterai pour voir :D

        En espérant qu'un adepte du SQL serveur passe par là pour toi ^^
        0
        1. Bonjour,

          J'ignore si tu as réussi à résoudre ton problème, mais je pense pouvoir t'apporter un peu d'aide.

          1°. Mettre des parenthèses autour de tes paramètres

          CREATE FUNCTION sf_GetLibStatut
          (@Num int)

          2°. Supprimer les points-virgule après l'instruction RETURNS
          RETURNS varchar(15)

          Bonne chance !
          0