Halloj!
Jag har en massa Lagrade Procedurer som jag vill effektivisera.
Denna SP fungerar, men jag skulle vilja effektivisera partiet där man kollar om det finns en eller flera värden i "@sFM" (OR/AND).
Kan man göra på nåt bättre/effektivare sätt?
Jag vet att man helst inte ska stränga ihop SQL-satsen i SP:n, men behöver hjälp för att snickra till det
SET @SQLstring ='SELECT * FROM tabell WHERE test=' + @test
begin
set @CommaWk = 0
set @SQLString = @SQLString + N'and ('
select @iCommaAt = CHARINDEX(',',@sFM)
while @iCommaAt > 0
begin
if @CommaWk > 0 set @SQLString = @SQLString + N' or '
if substring(@sFM, 1, @iCommaAt - 1) > ''
begin
set @CommaWk = @CommaWk + 1
set @SQLString = @SQLString + 'Fakt.sFakt = ''' + substring(@sFM, 1, @iCommaAt - 1) + ''''
end
select @sFM = substring(@sFM, @iCommaAt + 1, 255)
select @iCommaAt = charindex(',', @sFM)
end
if @CommaWk > 0
begin
set @SQLString = @SQLString + N' or '
end
if @sFM > '' SET @SQLString = @SQLString + N'Fakt.sFakt = ''' + @sFM + ''''
set @sqlstring = @SQLString + N')'
end
:l