webForumDet fria alternativet

Problem med dynamisk "order by"

Databaser & SQL

12 svar · 523 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Försöker skicka in en parameter som avgör vad den ska sortera på men jag får bara fel, har provat flera exempel från nätet men inget funkar??

ORDER BY CASE WHEN @SortOrder = 1 THEN (Date DESC) ELSE (Date) END

Får felet "felaktig parameter" när jag kör frågan i sql-server 2005 express.

Medlem sedan dec. 19996 721 inlägg
#2
ORDER BY CASE WHEN @SortOrder = 1 THEN -CONVERT(float,Date) ELSE CONVERT(float,Date) END
Medlem sedan sep. 2005673 inlägg
#3

Hm, näe får inte till det... står bara felaktig parameter när jag kör frågan i sql-server (man får dock fram rutan där man kan skriva in värdet på parametern).

Om det spelar någon roll så om sortorder är 1 så försöker jag sortera på en datumkolumn, annars en int-kolumn. Har försökt med convert på bara den ena eller den andra men jag får samma fel. Tar jag bort case-satsen så funkar det att sortera på respektive kollumn hur bra som helst!

Medlem sedan sep. 2005673 inlägg
#4

Har gjort en superenkel fråga med en dynamisk sortering, får samma fel:

SELECT     ID
FROM         Objects
ORDER BY CASE WHEN @SortOrder = 1 THEN Date ELSE ID END
Medlem sedan dec. 200012 464 inlägg
#5
SELECT     ID
FROM         Objects
ORDER BY CASE WHEN @SortOrder = 1 THEN Date END,
  case when @SortOrder <> 1 then id end
Medlem sedan sep. 2005673 inlägg
#6

Får samma fel... "felaktig parameter"... skumt detta...

Medlem sedan juni 200032 967 inlägg
#7

Du har inte glömt att definiera @SortOrder i din SQL-fråga då?

Medlem sedan sep. 2005673 inlägg
#8

Hm, det verkar funka ändå... jag stoppade in koden i frågan i en SP och körde den från min applikation och då gick det utan problem! Men när jag testar samma fråga direkt i esl server express så blir det "felaktig parameter". Jag fyller ju i exakt samma parameter-värde... Skumt sa badkaret!

Medlem sedan sep. 2005673 inlägg
#9

@nders skrev:

Du har inte glömt att definiera @SortOrder i din SQL-fråga då?

Nej, och skriver jag @sortorder i själva frågan så får man ju upp en ruta där man ska ange värdet på sortorder.... men oavsett jag skriver 1, 0 false eller nåt annat så får jag felaktig parameter.

Medlem sedan juni 200032 967 inlägg
#10

När du kör frågan direkt i SQL server express har du alltså deklarerat @SortOrder som en integer och tilldelat den ett värde? Om du inte har gjort det, är det inte konstigt att ett värde efterfrågas.

edit: det är dock möjligt att det skiljer i HUR du ställer frågorna i Management Studio. Så; var ställer du frågorna? :)

Medlem sedan sep. 2005673 inlägg
#11

Näe jag har inte deklarerat den iofs... men jag hade ett gäng andra variabler också och de har alltid fungerat.

Jag brukar klicka på "new query" och då får man ett fönster där man kan skriva frågor själv, tycker de här guiderna och det automatiska "sql-frågebyggandet" är lite småkrångligt... men det är kanske dags att lära sig hur man använder dem. Eller vad tycker ni, är det bättre att använda verktygen som finns för att göra frågor eller skriver ni själva? Det är väl lite som att skriva program i notepad att inte använda dem kanske...

Medlem sedan juni 200032 967 inlägg
#12

Det är väl lite som att skriva program i notepad att inte använda dem kanske...

Nej, det tycker jag inte. Jag tycker det snarare är som att bara använda WYSIWYG-läget i Dreamweaver och låta dw sköta all kod, jämfört med att använda vilke färgkodande editor som helst. Jag skriver "alltid" SQL-frågorna för hand.

Fungerar det om du deklarerar variabeln först? Det borde det.

Medlem sedan sep. 2005673 inlägg
#13

Japp, då fungerade det. Konstigt att jag inte råkat ut för detta innan bara, har aldrig deklarerat variabler förut när jag bara testat sql-frågor.

Tack för all hjälp!

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)