Einzelnen Beitrag anzeigen

Bart Simpson

Registriert seit: 3. Dez 2002
9 Beiträge
 
#1

ORDER BY Feld als Parameter übergeben

  Alt 17. Feb 2004, 13:08
Ich arbeite grade an 'ner MS-SQL DB mit einer immens großen Tabelle (>250.000 Einträge). Für meine App brauch ich immer mal wieder eine rel. kleine Menge aus dieser Tabelle (Größenordnung: 100 Datensätze).

Ich möchte dabei eine Seitenartige Darstellung realisieren. D.h. Es gibt gewisse Filter- und Sortierkriterien, die einige tausend Datensätze ergeben. Nun möchte ich aber immer nur z.B. 100 davon wirklich sehen. Wenn ich die ersten 100 will, ist's kein Problem, dann könnt ich via SELECT TOP 100 ... alles erledigen. Wenn ich aber z.B. von 900-1000 haben will, dann müsst ich alle 1000 Datensätze übertragen, und das könnte der Netzwerk-Overkill werden

Daher war meine Idee, eine gespeicherte Funktion ("Table-Valued") zu erstellen, die mir alle Filter- und Sortieraktionen durchführt. Dabei bekäme sie die Kriterien nach denen Sie filtern und sortieren soll per Parameter.
Soweit, so gut. Nun hab ich aber das Problem, dass die Sortierung natürlich einen Einfluss auf das Ergebniss hat, wenn ich z.B. von Datensatz 10 bis 20 haben will

Also hab ich mal blauäugig versucht, ein SELECT folgendermassen aufzubauen:
Code:
select * from tabelle order by @spalte
Das quittiert mir der Server aber mit folgendem:

Server: Nachr.-Nr. 1008, Schweregrad 15, Status 1, Zeile 4
Das von der ORDER BY-Nummer 1 identifizierte SELECT-Element enthält eine Variable in
dem Ausdruck, der eine Spaltenposition identifiziert. Variablen sind nur zulässig,
wenn der Ausdruck in der ORDER BY-Klausel auf einen Spaltennamen verweist.

Bzw. in Englisch:

The SELECT item identified by the ORDER BY number 1 contains a variable as part
of the expression identifying a column position. Variables are only allowed when
ordering by an expression referencing a column name.


Die Meldung an sich deutet für mich darauf hin, dass es wohl irgendwie möglich ist...nur wie???

Bart Simpson
Naeser's Gesetz: Man kann etwas narrensicher machen - aber nicht VERDAMMT narrensicher!
  Mit Zitat antworten Zitat