WhenI appeler cette procédure stockée:SQL Échec de la conversion Erreur
ALTER PROCEDURE [dbo].[GetSorted]
(
@OrderByColumn nvarchar(256)
)
AS
SET NOCOUNT ON
SELECT itDocs.AddedDate, itDocs.AddedBy FROM itDocs
ORDER BY
CASE WHEN @OrderByColumn='AddedDate' THEN itDocs.AddedDate
WHEN @OrderByColumn='AddedBy' THEN itDocs.AddedBy
END ASC
J'obtiens l'erreur:
Conversion failed when converting date and/or time from character string
.
Voilà comment j'appelle SP:
DECLARE @return_value int
EXEC @return_value = [dbo].[GetSorted]
@OrderByColumn = 'AddedBy'
SELECT 'Return Value' = @return_value
GO
MISE À JOUR: Si je approche à plusieurs cas comme le suggère poing 2 réponses, je reçois une erreur en essayant de ajouté un autre cas d'orientation:
ORDER BY
CASE WHEN @OrderDirection=0 THEN
CASE WHEN @OrderByColumn='AddedDate' THEN itDocs.AddedDate END ASC,
CASE WHEN @OrderByColumn='AddedBy' THEN itDocs.AddedBy END ASC
end
CASE WHEN @OrderDirection=1 THEN
en ce qui concerne votre mise à jour, ajouter direction ordre un paramètre de la procédure stockée, vous pouvez développer l'expression booléenne dans les instructions CASE pour vérifier à la fois la colonne et la direction. S'il vous plaît voir ma réponse mise à jour. – Tim