Я написал функцию для передачи нескольких параметров в запрос where, но теперь я столкнулся с проблемой производительности.
Мне нужно, чтобы функция не передавала несколько параметров.
CREATE FUNCTION [dbo].[UTILfn_Split] (@String NVARCHAR(max), @Delimiter VARCHAR(10))
RETURNS @ValueTable TABLE ([Value] NVARCHAR(max))
BEGIN
DECLARE @NextString NVARCHAR(max)
DECLARE @Pos INT
DECLARE @NextPos INT
DECLARE @CommaCheck NVARCHAR(1)
--Initialize
SET @NextString = ''
SET @CommaCheck = right(@String, 1)
--Check for trailing Comma, if not exists, INSERT
--if (@CommaCheck <> @Delimiter )
SET @String = @String + @Delimiter
--Get position of first Comma
SET @Pos = charindex(@Delimiter, @String)
SET @NextPos = 1
--Loop while there is still a comma in the String of levels
WHILE (@pos <> 0)
BEGIN
SET @NextString = substring(@String, 1, @Pos - 1)
INSERT INTO @ValueTable ([Value])
VALUES (@NextString)
SET @String = substring(@String, @pos + 1, len(@String))
SET @NextPos = @Pos
SET @pos = charindex(@Delimiter, @String)
END
RETURN
END
В настоящее время я использую функцию для передачи нескольких параметров, как показано ниже, но мне нужно улучшить производительность запросов, избегая функции взапрос. Есть ли способ передать несколько параметров без функции?