Jag vill kunna sortera efter olika fält beroende på vad jag skickar in som parameter. Det nedan fungerar inte och jag vill inte skriva om selectsatsen flera gånger och göra något som väljer bland dem. Det går inte göra så, antingen får du göra en selectsats för varje kolumn. Alternativt kan du bygga upp selectsatsen dynamiskt, men då förlorar du de fördelar som stored procedures innebär. VAd JohanD menar är : Hejsan Ett alternativ är att använda CASE Om man vet vilka fält man vill använda är CASE braORDER BY med "@parameter"
<code>
ALTER PROCEDURE getOrderPerson
@order nvarchar(50)
AS
SELECT * FROM tblPerson
ORDER BY @order
GO
EXEC getOrderPerson 'nvcFirstName'
</code>Sv: ORDER BY med "@parameter"
/JohanSv: ORDER BY med "@parameter"
<code>
ALTER PROCEDURE getOrderPerson
@order nvarchar(50)
AS
DECLARE @q nvarchar(100)
SELECT @q = 'SELECT * FROM tblPerson ORDER BY ' + @order
EXEC (@q)
</code>Sv: ORDER BY med "@parameter"
I det där fallet skulle jag nog välja att ha @order som en int
För att slippa obehagliga SQL-statements i @order ('1 DROP TABLE Order')
/JohanSv: ORDER BY med "@parameter"
<code>
SELECT *
FROM dbo.tblPersob
ORDER BY CASE WHEN @order = 1 THEN Fornamn ELSE Efternamn END
</code>
/KajsaSv: ORDER BY med "@parameter"
Skippa * om du vet vilka fält du ska använda
/Johan