我在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
答案 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