webForumDet fria alternativet

variabel stored procedure

6 svar · 278 visningar · startad av clarkbones

clarkbonesMedlem sedan feb. 20013 023 inlägg
#1

Hej!

Jag vill selecta ett fälts värde beroende på en parameter.

Jag har två parametrar:
@Measure
@CompanyName

Jag har några olika fält i tabellen. Vilket jag är intresserad av att selektera bestäms av parametern @Measure. Två fältnamn jag har är 'profit' och 'costs'.

såhär ser sqluttrycket ut:

SELECT @Measure FROM tbldata WHERE qCompanyName=@CompanyName

...men det blir inte rätt.

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Jo, det blir rätt ;)

exec('SELECT ' + @Measure + ' FROM tbldata WHERE qCompanyName= ''' + @CompanyName + '''')
@ndersMedlem sedan juni 200032 969 inlägg
#3

Om man bygger upp frågan i sin lagrade procedur på detta sätt förlorar man dock de fördelar som förkompileringen av proceduren ger dig.

Mvh

clarkbonesMedlem sedan feb. 20013 023 inlägg
#4

@nders skrev:

Om man bygger upp frågan i sin lagrade procedur på detta sätt förlorar man dock de fördelar som förkompileringen av proceduren ger dig.

Mvh

Såg först nu ditt svar @nders. Menar du oavsett vilket sätt man gör eller menar du just LarsG:s sätt? Ska jag istället ha fler olika sp:s och anropa dem?

@ndersMedlem sedan juni 200032 969 inlägg
#5

Om man bygger upp frågan i sin stored procedure enligt LarsGs exempel så går man miste om förkompileringen, vilket ju är en av anledningarna till att använda en SP.

Du kan använda flera procedurer, eller styra frågandet med if-satser i proceduren.

mvh

clarkbonesMedlem sedan feb. 20013 023 inlägg
#6

Tack...ska testa med if

clarkbonesMedlem sedan feb. 20013 023 inlägg
#7

hmmm, kan man använda någon elseif eller måste man nästla if-satser om man har exempelvis fyra olika scenarier och inte bara två som i en vanlig if-else struktur?

edit: Eller kan jag använda case?

Fundering: Varför kunde inte Microsoft gjort så att man kunde programmera med VB istället för Transact-SQL? Så mycket enklare det hade varit. SQL i sig kunde förstås få vara kvar

136 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)