存儲結果,我與客戶誰擁有大約十幾個參數的存儲過程的工作。TSQL - 傳遞從表中的字段到存儲過程,然後在臨時表
我需要從數據庫中的表得到的參數值,然後反饋到這些存儲過程得到一個數值。然後我需要將這個值加入到SELECT語句中。
我知道,我在爲了加入我的select語句的SP結果建立一個臨時表,但是這是所有新的給我,可以使用一些幫助。主要關注如何將字段值輸入到SP中。我還想讓Temp表包含一些作爲字段的參數,這樣我就可以將它加入到我的select語句中。
任何和所有的幫助表示讚賞。
謝謝
存儲結果,我與客戶誰擁有大約十幾個參數的存儲過程的工作。TSQL - 傳遞從表中的字段到存儲過程,然後在臨時表
我需要從數據庫中的表得到的參數值,然後反饋到這些存儲過程得到一個數值。然後我需要將這個值加入到SELECT語句中。
我知道,我在爲了加入我的select語句的SP結果建立一個臨時表,但是這是所有新的給我,可以使用一些幫助。主要關注如何將字段值輸入到SP中。我還想讓Temp表包含一些作爲字段的參數,這樣我就可以將它加入到我的select語句中。
任何和所有的幫助表示讚賞。
謝謝
您可以捕獲聲明變量中的參數值。例如:
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。
這是一個更好的格式化爲答案評論。
你並不需要創建一個臨時表或表變量,要能夠加入數字結果與其他數據。以下演示了使用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
這太棒了。我是否需要做一些循環來遍歷每一列值,或者這段代碼是否已經這樣做了? – user1440675
INSERT/EXECUTE將獲取所有行(來自第一個結果集)並將它們放入@ProcOutput,因此您不需要循環。如果您需要多次調用存儲過程並使用多組參數,那麼您將需要一個循環。 – GilM