Ich muss ein Raster auf einer Webseite anzeigen. Die Daten stammen aus SQL Server 2008 über eine gespeicherte Prozedur. Da der Sproc Tausende von Datensätzen zurückgibt, entschied ich mich für eine Paging-Option, die gut funktioniert. In der gespeicherten Prozedur, kann ich so etwas wie diese:SQL-Paging-Sortierung
declare @RowIdMin int=10
declare @RowIdMax int=25
select *
from (select Col1, Col2, ROW_NUMBER() over (order by Col1 desc) as RowId
from MyTable) dt
where RowId BETWEEN @RowIdMin AND @RowIdMax
Diese so lange funktioniert gut, wenn der Benutzer glücklich ist, die Daten von Col1 sortiert zu bekommen. Wie könnte ich das umschreiben, wenn ich nicht im Voraus weiß, in welche Spalte das Recordset sortiert werden soll? Dies funktioniert nicht:
declare @RowIdMin int=10
declare @RowIdMax int=25
declare @ColSort varchar (100) = 'MyColumn'
select *
from (select Col1, Col2, ROW_NUMBER() over (order by <b>@ColSort</b> desc) as RowId
from MyTable) dt
where RowId BETWEEN @RowIdMin AND @RowIdMax
Ich nehme SQL Injection für 200 Alex! –
Wer Eingaben nicht validiert, sollte sie verwenden, um Ausgaben zu erzeugen – u07ch
+1 Injektion Angriff hat nichts mit der Frage zu tun – Andomar