2012-08-28 65 views
0

存儲結果,我與客戶誰擁有大約十幾個參數的存儲過程的工作。TSQL - 傳遞從表中的字段到存儲過程,然後在臨時表

我需要從數據庫中的表得到的參數值,然後反饋到這些存儲過程得到一個數值。然後我需要將這個值加入到SELECT語句中。

我知道,我在爲了加入我的select語句的SP結果建立一個臨時表,但是這是所有新的給我,可以使用一些幫助。主要關注如何將字段值輸入到SP中。我還想讓Temp表包含一些作爲字段的參數,這樣我就可以將它加入到我的select語句中。

任何和所有的幫助表示讚賞。

謝謝

回答

2

您可以捕獲聲明變量中的參數值。例如:

DECLARE @Parm1 int, @Parm2 varchar(50) -- Use appropriate names and datatypes 

SELECT @Parm1 = Parm1ColumnName, @Parm2=Parm2ColumnName 
FROM TableWithParmValues 
-- Include a WHERE condition if appropriate 

DECLARE @ProcOutput TABLE(outputvalue int) -- use appropriate names and datatypes to match output 

INSERT @ProcOuptut 
EXECUTE MyProc @ProcParm1 = @Parm1, @ProcParm2 = @Parm2 -- Use appropriate names 

然後使用@ProcOutput臨時表和參數變量,因爲您需要使用SELECT。

+0

這太棒了。我是否需要做一些循環來遍歷每一列值,或者這段代碼是否已經這樣做了? – user1440675

+0

INSERT/EXECUTE將獲取所有行(來自第一個結果集)並將它們放入@ProcOutput,因此您不需要循環。如果您需要多次調用存儲過程並使用多組參數,那麼您將需要一個循環。 – GilM

0

這是一個更好的格式化爲答案評論。

你並不需要創建一個臨時表或表變量,要能夠加入數字結果與其他數據。以下演示了使用SELECT s的各種好奇心,而沒有明確地創建任何表格:

declare @Footy as VarChar(16) = 'soccer' 
select * from (
    select 'a' as Thing, 42 as Thingosity 
    union all 
    select * 
    from (values ('b', 2), ('c', 3), (@Footy, Len(@Footy))) as Placeholder (Thing, Thingosity) 
) as Ethel cross join 
    (select 42 as TheAnswer) as Fred 
相關問題