ekke_tMedlem sedan juli 2001203 inlägg Hej hej!
Jag är nybörjare på detta och har nu fått lite problem med lagrade procedurer... :(
Jag har gjort en sökfunktion som söker på ett antal fält i en databas... man matar in sökvärdena i ett vanligt formulär med några drop-down menyer och checkboxar etc... totalt 11 fält...
Jag har nu använt mig av "wild SQL" för att utföra sökningen.. men för att snabba upp det hela lite vill jag lägga in sökningen i en lagrad procedur...
Problemet är att jag inte vet hur jag ska kunna göra en dynamisk SQL-fråga där... jag vill alltså inte söka på fält där man inte angett något värde...
Jag skulle ju kunna lösa det med en mängd if-satser i proceduren.. men det känns ju lite jobbigt :(
Någon som har något tips på hur jag kan lösa detta?? :)
/Erik
LarsGMedlem sedan dec. 200012 464 inlägg Du kan dynamiskt bygga ihop en sträng i din procedur och exekvera den. Om du gör så, så kommer du dock inte att få någon prestandavinst i och med att den frågan måste kompileras vid varje anrop av proceduren.
create procedure p(@s1 varchar(20) = null,@s2 varchar(30) = null)
as
declare @sqlStr varchar(2000)
set @sqlStr = null
if @s1 is not null
if @sqlStr is null
set @sqlStr = ' where aleb = ''' + @s1 + '' '
else
set @sqlStr = ' and aleb = ''' + @s1 + '' '
if @s2 is not null
if @sqlStr is null
set @sqlStr = ' where caleb = ''' + @s2 + '' '
else
set @sqlStr = ' and caleb = ''' + @s2 + '' '
exec('select * from ogrish ' + @sqlStr)
------------------
essentitia preter non sans multiplicandum
ekke_tMedlem sedan juli 2001203 inlägg Tack så mycket :D
Då kan jag ju lika gärna strunta i att använda lagrad procedur i det här fallet...
LarsGMedlem sedan dec. 200012 464 inlägg Ja, ur prestandasynpunkt. Däremot så blir din VBScript-kod enklare om du använder en lagrad procedur.
------------------
essentitia preter non sans multiplicandum