Вы можете использовать параметры OUTPUT ...
CREATE PROCEUDRE yourSP (@str AS VARCHAR(max), @output1 AS VARCHAR(max) OUTPUT, @output2 AS VARCHAR(max) OUTPUT)
AS
BEGIN
while (@Str <> '') begin
set @output1 = LEFT(@Str, CHARINDEX(']', @Str))
set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))
end
set @puput2 = @str
END
Затем вызовите этот SP с входными и выходными переменными.
DECLARE
@str VARCHAR(max),
@result1 VARCHAR(max),
@result2 VARCHAR(max)
SELECT
@str = '[Var1][Var2]'
EXEC yourSP @str, @result1 OUTPUT, @result2 OUTPUT
SELECT @str, @output1, @output2
Или вы можете упаковать ее в табличную функцию вместо хранимой процедуры ...
SELECT
@output1 = split.value1,
@output2 = split.value2
FROM
dbo.yourFn(@str) AS split
И если у вас есть данные для обработки, это позволяет использоватьПРИМЕНИТЬ ...
SELECT
source.str,
split.value1,
split.value2
FROM
source
CROSS APPLY
dbo.yourFn(source.str) AS split