在另一个查询中使用连接的字符串变量

时间:2011-12-09 17:46:49

标签: sql sql-server tsql

我在SQL服务器中有一个这样的SPROC会拆分一个串联字符串([var1] [var2])并返回2个结果集,如何将每个单独的项从结果集传递到我的SProc中的另一个@var所以我可以做到这一点,谢谢:

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 个答案:

答案 0 :(得分:1)

您可以使用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


然后使用bout输入和输出变量调用该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

如果您有足够的数据可以处理,那么这会让您使用APPLY ...

SELECT
  source.str,
  split.value1,
  split.value2
FROM
  source
CROSS APPLY
  dbo.yourFn(source.str) AS split