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 Jo, det blir rätt ;)
exec('SELECT ' + @Measure + ' FROM tbldata WHERE qCompanyName= ''' + @CompanyName + '''')
@ndersMedlem sedan juni 200032 969 inlägg 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
@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 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
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