{SQL Server} Syntaxe incorrecte vers
Résolu
feadin91
Messages postés
282
Statut
Membre
-
feadin91 Messages postés 282 Statut Membre -
feadin91 Messages postés 282 Statut Membre -
Bonjour,
Comme le titre l'indique, j'ai une erreur de syntaxe vers le mot-clé "IF" dans le code suivant:
Le but de cette fonction est de retourner soit la table t_Usine en entier (si la fonction est appelée sans paramètres)
Soit de retourner une ligne unique correspondant à l'usine indiquée par l'un (ou les deux) des paramètres passés.
S'il vous plait, je ne vois pas mon erreur... J'ai beau tourner et retourner le probleme sous tous les sens, je ne comprends pas mon erreur.
Note : j'utilise l'éditeur de Microsoft Visual Studio 2008.
Comme le titre l'indique, j'ai une erreur de syntaxe vers le mot-clé "IF" dans le code suivant:
ALTER FUNCTION dbo.fnt_Usine ( @idUsine [int] = NULL, @sCode [char](2) = NULL ) RETURNS TABLE AS IF ((@idUsine IS NULL) AND (@sCode IS NULL)) BEGIN RETURN (SELECT [idUsine] ,[sCode] ,[sLibelle] FROM [dbo].[t_Usine]) END ELSE BEGIN RETURN (SELECT [idUsine] ,[sCode] ,[sLibelle] FROM [dbo].[t_Usine] WHERE ((@idUsine IS NULL) OR ([idUsine] = @idUsine)) AND ((@sCode IS NULL) OR ([sCode] = @sCode))) END
Le but de cette fonction est de retourner soit la table t_Usine en entier (si la fonction est appelée sans paramètres)
Soit de retourner une ligne unique correspondant à l'usine indiquée par l'un (ou les deux) des paramètres passés.
S'il vous plait, je ne vois pas mon erreur... J'ai beau tourner et retourner le probleme sous tous les sens, je ne comprends pas mon erreur.
Note : j'utilise l'éditeur de Microsoft Visual Studio 2008.
A voir également:
- Trouver erreur de syntaxe fichier txt pix
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
11 réponses
Au point où j'en suis, je prend toute proposition.
Celle-ci ne fonctionne pas ("Syntaxe incorrecte vers "THEN" et vers "END" ")
Celle-ci ne fonctionne pas ("Syntaxe incorrecte vers "THEN" et vers "END" ")
oublie de virgule quand tu crée fonction,
ou met un return 0 juste avant tes END??? ( je ne sais plus si en en langage C ou SQL ca ^^ met comme tu dis il faut tous tenter)
ou met un return 0 juste avant tes END??? ( je ne sais plus si en en langage C ou SQL ca ^^ met comme tu dis il faut tous tenter)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est du C pour le Return 0
Parce que si je met "Return 0" avant mes END, il va me retourner "0", et non pas une table.
Parce que si je met "Return 0" avant mes END, il va me retourner "0", et non pas une table.
Syntaxe incorrecte vers IF, ELSE et END.
Et si j'enlève aussi le BEGIN après le ELSE... Syntaxe incorrecte vers IF et ELSE (ce qui est logique car on ne lui dit pas où s'arrêter après son IF.
Et si j'enlève aussi le BEGIN après le ELSE... Syntaxe incorrecte vers IF et ELSE (ce qui est logique car on ne lui dit pas où s'arrêter après son IF.
Je cherche, je cherche....
Je trouve pas pour le moment :S (je suis dessus depuis vendredi matin =/)
Je trouve pas pour le moment :S (je suis dessus depuis vendredi matin =/)
Blux : non.
En fait, je viens de résoudre le problème avec une collègue ;)
Voilà la sollution :
En fait, je déclare une table temporaire dans laquelle je met les résultats des Select, puis je met dans la table de retour...
Facile non? -_- 2 jours de boulot pour ça...
Résolu! Merci à vous.
En fait, je viens de résoudre le problème avec une collègue ;)
Voilà la sollution :
ALTER FUNCTION [fnt_Usine_2] ( @idUsine [int] = NULL, @sTagUsine [char](2) = NULL ) RETURNS @Result TABLE(Id int NULL, tag char(2) NULL, libelle varchar(255) NULL) AS BEGIN DECLARE @tempo table(Id int NULL, tag char(2) NULL, libelle varchar(255) NULL) IF ((@idUsine IS NULL) AND (@sTagUsine IS NULL)) INSERT INTO @tempo SELECT [idUsine] ,[sTagUsine] ,[sLibelle] FROM [t_Usine] ELSE INSERT INTO @tempo SELECT [idUsine] ,[sTagUsine] ,[sLibelle] FROM [t_Usine] WHERE ((@idUsine IS NULL) OR ([idUsine] = @idUsine)) AND ((@sTagUsine IS NULL) OR ([sTagUsine] = @sTagUsine)) INSERT INTO @Result SELECT * FROM @tempo RETURN END
En fait, je déclare une table temporaire dans laquelle je met les résultats des Select, puis je met dans la table de retour...
Facile non? -_- 2 jours de boulot pour ça...
Résolu! Merci à vous.