2017-06-03 38 views
0

我有兩個存儲過程 - test_proc和calling_proc。過程calling_proc中正在調用過程test_proc。程序內調用程序操縱返回結果

結果是這樣的:

enter image description here

是可能只有一行從calling_proc(而不是四個行),這將是這樣的返回:

+-------+-------+-------+-------+ 
| test1 | test2 | test3 | test4 | 
+-------+-------+-------+-------+ 
|  1 |  2 |  3 |  4 | 
+-------+-------+-------+-------+ 

程序:

create procedure test_proc 
as 
begin 
select 1 test1 
select 2 test2 
select 3 test3 
end 

create procedure calling_proc 
as 
begin 
exec test_proc 
select 4 test4 
end 
+0

在第一PROC逗號將最後2種選擇。那麼你將不得不將exec test proc的結果存儲到一個臨時表中並在最終進程中加入它 – scsimon

+0

你能舉個例子嗎?我不知道如何將存儲過程調用的結果存儲到臨時表中。 – FrenkyB

+0

每個select語句都會給你一個結果集。所以如果你想在select語句中有多個列,用逗號分隔它們。這是非常基本的SQL。 https://docs.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql –

回答

2

這樣的事......依賴根據你的環境,你必須改變服務器設置。但使用OPENROWSET

SELECT * 
INTO #MyTempTable 
FROM OPENROWSET('SQLNCLI', 'Server=(local)\SQL2008;Trusted_Connection=yes;', 
    'EXEC test_proc') 

SELECT *, 4 AS test4 
FROM #MyTempTable 

或者說,這樣的事情...

CREATE #MyTempTable (test1 int, test2 int, test3 int, test4 int) 
INSERT INTO #MyTemptTable (test1,test2,test3) 
EXEC test_proc 

UPDATE #MyTempTable 
SET test4 = 4 
+0

我很確定這是一項家庭作業,他們只是在尋找一個選擇的聲明,老師會看這個,並知道它不是由初學者完成的。 :)但是你*確實*回答了這個問題,所以得到了讚賞! –

+0

@JacobH - 請去其他地方留言。 – FrenkyB

+0

什麼?我有沒有碰到一個神經?你幾乎沒有做任何努力,也沒有做任何研究,你希望有人爲你寫代碼。 –

相關問題