2017-06-03 28 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

什么?我有没有碰到一个神经?你几乎没有做任何努力,也没有做任何研究,你希望有人为你写代码。 –

相关问题