[英]using a concatenated string variable in another query
我在SQL Server中有一个这样的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
您可以使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.