[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. 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
    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. 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
          C'est quoi le libellé de l'erreur lorsque tu tente d'exécuter cette fonction ?
          0