Rechercher : dans
Par :

[SQL] Erreur syntaxe dans fonction

Dernière réponse le 23 avr 2008 à 12:37:02 SuzukMan, le 9 jan 2008 à 14:51:05 
 Signaler ce message aux modérateurs

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

1

kij_82, le 9 jan 2008 à 14:56:48

C'est quoi le libellé de l'erreur lorsque tu tente d'exécuter cette fonction ?

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

2

SuzukMan, le 9 jan 2008 à 15:08:17

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é.

Répondre à SuzukMan

3

kij_82, le 9 jan 2008 à 15:17:23

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 ^^

~ N'oubliez pas la balise "Résolu" lorsque votre problème est... résolu :) ~

Répondre à kij_82

4

 Adorien, le 23 avr 2008 à 12:37:02

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 !

Répondre à Adorien
Collection CommentÇaMarche.net