oggo a écrit :
Bonjour, j'ai une procédure stockée dans laquelle je passe un parametre date de type DATETIME. Je dois utiliser un varchar pour ma requête car j'ai un parametre orderBy et SQLServer n'accepte pas des variables dans un order by..Mais cela me pose probleme lorsque je veux également utiliser le paramètre date. -> Erreur de syntaxe lors de la conversion d'une valeur datetime à partir d'une chaine de caracteres Je précise que cela fonctionne tb lorsque je n'utilise pas le paramètre orderBy et donc en utilisant une requête sans passer par le varchar. J'ai également utiliser cast, convert, etc je suis à cours d'idée malheureusement. Auriez vous une solution? merci d'avance CREATE PROCEDURE recherche @date datetime, @orderBy varchar(20) AS DECLARE @tri varchar(50) DECLARE @Str varchar(1000) set @tri = ' ORDER BY '+@orderBy Select @Str ='SELECT * FROM matable WHERE date > '+@date + @tri exec (@Str) GO
|
Ce n'est pas très joli, mais bon.... ça marche
CREATE PROCEDURE recherche @date varchar(10), @orderBy varchar(20) AS
DECLARE @tri varchar(50)
DECLARE @Str varchar(1000)
set @tri = ' ORDER BY '+@orderBy
Select @Str ='SELECT * FROM matable WHERE date > cast(''' + @date + ''' as smalldatetime)' + @tri
exec (@Str)
GO
Attention à bien respecter les apostrophes