{SQL} Return, IF... ELSE...??
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 :
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!
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
-
il est ou ton END IF?
-
Pour SQL Server 2008, il n'y a pas de END IF. Juste END (enfin il me semble...) Je vais tester ça de suite.
-> Je confirme. En SQL Server, c'estIF Boolean_expression { sql_statement | statement_block } [ ELSE { sql_statement | statement_block } ]
(source : msdn library https://docs.microsoft.com/en-us/sql/t-sql/language-elements/if-else-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15 ) -
ba oui mais dans ce cas je vois le end de ton begin mais pas de ton if
-
je suis oracle je connais pas sql server dsl
-
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! -
ok ba dans ton exemple y'a un ; et pas toi
-
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. -
c'est quoi l'erreur