/ Forside/ Teknologi / Udvikling / SQL / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Order By i Stored Procedure
Fra : stk
Vist : 581 gange
90 point
Dato : 16-03-01 11:27

Jeg har en SP, hvor jeg sorterer efter et af to felter:

select * from #users
order by case
   when @OrderCol = "ID" then UserID
   else [Name]
end

men hvordan kan jeg bestemme rækkefølgen (asc/desc) via en input variabel?

Stefan

 
 
Accepteret svar
Fra : fehaar

Modtaget 100 point
Dato : 16-03-01 12:03

Jeg kan umiddelbart se to måder at løse dette på. Hvis du KUN skal ordne efter en kolonne kan det se ud som følger :

if @Order = "ASC"
select * from #users
order by case
when @OrderCol = "ID" then UserID
else [Name]
end asc
else
select * from #users
order by case
when @OrderCol = "ID" then UserID
else [Name]
end desc

Hvis du har flere kolonner bliver dette dog umuligt, men så kan du ty til at opbygge SQL sætningen som en streng i stedet og så fyre den af med sp_executesql. Der kan du lave hvad som helst. Denne løsning har dog den ulempe at den ikke kan optimere din procedure.


Godkendelse af svar
Fra : stk


Dato : 16-03-01 12:32

I dette tilfælde skal jeg kun sortere på en kolonne, så det er fint.
Jeg vil helst undgå sp_executesql, da der er meget høje performance krav til min app.
Stefan

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407848
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste