{SQL} Return, IF... ELSE...??

feadin91 Messages postés 282 Statut Membre -  
feadin91 Messages postés 282 Statut Membre -
Bonjour,

J'ai une application en C#, .net 1.1, avec gestion d'une base de données. Dans celle-ci, je dois créer une fonction qui retourne une table, ou une seule ligne, en fonction de la présence ou non de paramètres...

J'utilise l'éditeur Visual Studio 2008 (personne n'est parfait ;) )

Pour le moment j'ai :

ALTER FUNCTION dbo.fnt_Usine

(
 @idUsine [int] = Null,
 @sCode [char](2) = Null
)
Returns Table
As
Return
(
If((@idUsine Is Null) And (@sCode Is Null))
Begin
	Select
	 [idUsine]
	,[sCode]
	,[sLibelle]

	From [dbo].[t_Usine]
End
Else
Begin
	Select
	 [idUsine]
	,[sCode]
	,[sLibelle]

	From [dbo].[t_Usine]
	Where
		((@idUsine Is Null) Or ([idUsine] = @idUsine))
		And ((@sCode Is Null) Or ([sCode] = @sCode))
End
)


Sauf que à priori ma syntaxe n'est pas la bonne...
Lorsque je veux sauvegarder la modification, VS2008 m'indique que la syntaxe n'est pas bonne vers 'If'
et vers ')'...

J'ai beau essayer toutes les modifications possibles, je ne vois pas comment faire...

Please Help!

--
La cuillère n'existe pas!
Configuration: Windows Vista FireFox 3.0.9

8 réponses

  1. Profil bloqué
     
    ba oui mais dans ce cas je vois le end de ton begin mais pas de ton if
    0
  2. Profil bloqué
     
    je suis oracle je connais pas sql server dsl
    0
    1. feadin91 Messages postés 282 Statut Membre 89
       
      Pas grave, merci d'avoir essayé :)
      De plus, les deux (Oracle et SQL Server) ne sont pas très différents ;)
      0
  3. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  4. feadin91 Messages postés 282 Statut Membre 89
     
    Il n'y en a pas.
    La fin du IF est déterminée par le ELSE...
    Regarde cet exemple (toujours sur MSDN) :

    DECLARE @AvgWeight decimal(8,2), @BikeCount int
    IF 
    (SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
    BEGIN
       SET @BikeCount = 
            (SELECT COUNT(*) 
             FROM Production.Product 
             WHERE Name LIKE 'Touring-3000%')
       SET @AvgWeight = 
            (SELECT AVG(Weight) 
             FROM Production.Product 
             WHERE Name LIKE 'Touring-3000%')
       PRINT 'There are ' + CAST(@BikeCount AS varchar(3)) + ' Touring-3000 bikes.'
       PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.'
    END
    ELSE 
    BEGIN
    SET @AvgWeight = 
            (SELECT AVG(Weight)
             FROM Production.Product 
             WHERE Name LIKE 'Touring-3000%' )
       PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.' 
    END ;
    --
    La cuillère n'existe pas!
    0
  5. Profil bloqué
     
    ok ba dans ton exemple y'a un ; et pas toi
    0
  6. feadin91 Messages postés 282 Statut Membre 89
     
    Bien vu!
    J'essaye.

    -> Cela ne change rien. Que je place des ; à la fin des blocs SQL (BEGIN ... END) ou après la ) de fin du RETURN, cela me met la même erreur.
    0
  7. Profil bloqué
     
    c'est quoi l'erreur
    0
    1. feadin91 Messages postés 282 Statut Membre 89
       
      "Syntaxe incorrecte vers le mot clé 'If'.
      Ligne 32 : syntaxe incorrecte vers ')'."

      Ligne 32 correspond à ma dernière ligne.
      0