30. marts 2004 - 11:12Der er
5 kommentarer og 1 løsning
Dynamisk "order by" i Stored Procedure
Nogen fortael mig at der er andre maader at lave en dynamisk angivelse af "order by" kriteriet end en "switch case" i en Stored Procedure paa en Sql Srv 2k ?
Der er en anden måde, men den er langt dummere at arbejde med end en case i order by.
Den går ud på at lave et sæt select per sorteringskombination - dvs. din stored procedure vokser vanvittigt, hvis du har en lidt større forespørgsel eller mange sorteringsmuligheder.
...ja og man kan ogsaa bare lave en if - then - else... og maanen er lavet af groen ost og kejseren har ikke noget toej paa (som den 12-aarige dreng pegede paa manden og sagde i eventyret om den forfaengelige kejser...
kors man.. hvad er det en ent.edt. licens koster... 50.000 danske inflationsramte kroner ?
Indtil nu har jeg vaere grundigt imponeret og tilfreds med de Sql srv'ere jeg har arbejdet med... men det her er da ikke til at leve med...
bt... jeg sender pts. i din retning for din deltagelse... jeg takker mange gange (selvom jeg maaske ikke lyder taknemlig for hjaelpen, saa er jeg det altsaa, men jeg vil da finde et andet trae at goe op af og ikke bekymre mig om at goere min T-Sql bedre paa det pkt. ihvertilfald)
det skal jo lige siges at en af grundene til min harme er at en "case" i T-Sql udelukkende understoetter skalara vaerdier, saa man kan ikke engang lave en "case" paa en varchar.... :(
Hvis du med scalare værdier mener int, så kan et trick være at konvertere alt specifikt til varchar i et format, hvor sorteringen stadig bliver korrekt.
Hvis du ikke laver nogle cast/convert, så laver SQL Server et implicit cast til den højest rangerende datatype, og det er netop int.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.