Когда я вызываю эту хранимую процедуру:
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
Я получаю ошибку:
Конвертация не удалась при конвертации даты
и / или время из символьной строки
.
Вот как я называю SP:
DECLARE @return_value int
EXEC @return_value = [dbo].[GetSorted]
@OrderByColumn = 'AddedBy'
SELECT 'Return Value' = @return_value
GO
UPDATE:
Если я использую подход с несколькими случаями, как предложено в ответах на кулак 2,
Я получаю сообщение об ошибке при попытке добавить еще один случай для ориентации:
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