[SQL] Erreur syntaxe dans fonction

SuzukMan Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
Adorien Messages postés 1 Statut Membre -
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. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    C'est quoi le libellé de l'erreur lorsque tu tente d'exécuter cette fonction ?
    0
  2. SuzukMan Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   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
  3. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    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
  4. Adorien Messages postés 1 Statut Membre
     
    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