2011-12-09 44 views
1

我有一個這樣的SPROC在SQL服務器將分裂連接的字符串([var1] [var2])並返回2結果集,如何通過結果中的每個單獨的項目設置成我的存儲過程的另一個@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

你可能會考慮爲數據庫平臺 – momeara

+0

添加一個標籤所以,你需要分離變量,然後再次連接並將它們分配給另一個變量? – Lamak

回答

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 


然後調用該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 

如果你有atable數據要處理,這則applows你使用APPLY ...

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