ho una stored procedure che avvia un ordine da parte dipendente da un parametro:ORDER BY a seconda dei risultati dei parametri per errore
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
Tuttavia ... Se io chiamo la procedura come questa:
EXEC dbo.GetUsersByClusterAndUserName @SortOrder=1, @SortField='UserName'
ottengo il seguente errore:
Msg 241, Level 16, State 1, Procedure GetUsersByClusterAndUserName, Line 7
Conversion failed when converting date and/or time from character string.
perché dovrebbe cercare di convertire qualcosa per data/ora. Qualcuno può aiutare, per favore?
Buona domanda! Suggerimenti minori, rendono '@ SortOrder' un' BIT' – Khan
Personalmente, questo è qualcosa che farei il controllo dell'interfaccia utente. – UnhandledExcepSean