Ich habe eine gespeicherte Prozedur, die durch in Abhängigkeit von einem Parameter eine Bestellung einleitet:ORDER BY abhängig vom Parameter resultiert in Fehler
DROP PROCEDURE [dbo].[GetUsersByClusterAndUserName]
GO
CREATE PROCEDURE [dbo].[GetUsersByClusterAndUserName]
@SortField [nvarchar] (256) = 'UserName',
@SortOrder [int] = 0
AS
SELECT * FROM [User]
ORDER BY
CASE WHEN @SortOrder = 0 THEN
CASE
WHEN @SortField = 'UserName' THEN User_UserName
WHEN @SortField = 'LastLoginDate' THEN User_LastLoginDate
WHEN @SortField = 'CreationDate' THEN User_CreationDate END
END ASC,
CASE WHEN @SortOrder = 1 THEN
CASE
WHEN @SortField = 'UserName' THEN User_UserName
WHEN @SortField = 'LastLoginDate' THEN User_LastLoginDate
WHEN @SortField = 'CreationDate' THEN [User_CreationDate] END
END DESC
RETURN 0
GO
jedoch ... Wenn ich das Verfahren wie folgt aufrufen:
EXEC dbo.GetUsersByClusterAndUserName @SortOrder=1, @SortField='UserName'
bekomme ich folgende Fehlermeldung:
Msg 241, Level 16, State 1, Procedure GetUsersByClusterAndUserName, Line 7
Conversion failed when converting date and/or time from character string.
Warum sollte es versuchen, etwas zu Datum/Zeit zu konvertieren. Kann mir bitte jemand helfen?
Gute Frage! Kleinere Vorschläge, machen Sie den '@ SortOrder' ein' BIT' – Khan
Persönlich würde dies die UI-Kontrolle machen. – UnhandledExcepSean