использование объединенной строковой переменной в другом запросе - PullRequest
1 голос
/ 09 декабря 2011

У меня есть такой SPROC на сервере SQL, который разбивает объединенную строку ([var1] [var2]) и возвращает набор результатов 2, как передать каждый отдельный элемент из наборов результатов в другой @var в моем SProc так что я могу это сделать, спасибо:

SET @var3 = (select [var1]+[var2]) --Join the result sets values and assign it to another variable
                 from ...where...

Наборы результатов:

например,

resultset
----
tbl1
----
[var1]

resultset
----
tbl1
----
[var2]

Запрос, который разбивает объединенную строку на части:

declare @Str as varchar(100) 

set @Str = '[Var1][Var2]' 
while (@Str <> '') begin 
        select LEFT(@Str, CHARINDEX(']', @Str))  as resulttbl 
        set @Str = SUBSTRING(@Str, CHARINDEX(']', @Str) + 1, LEN(@Str))  

end

1 Ответ

1 голос
/ 09 декабря 2011

Вы можете использовать параметры 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...