如何在另一个程序中使用一个程序的返回表数据?

时间:2015-08-17 10:54:51

标签: sql sql-server sql-server-2008 stored-procedures

我有一个程序,它会从临时表中返回数据。临时表结构可能会有所不同,具体取决于程序的输入参数。这个程序是一般程序,所以我不能修改这个。

我的要求是我想使用返回临时表数据从另一个程序进行一些计算。是否有可能实现这一点????

要求是这样的事情

Create Procedure Proc2 ( @Condition int)  
As  
BEGIN
   execute #temp = Proc1 input1,input2

   select * from #temp where column1 = @Condition 
END

此Proc1正在其他一些程序中使用,所以我不能在Proc1中包含条件。

使用SQL SERVER 2008 R2

Thejus T V

2 个答案:

答案 0 :(得分:1)

您需要创建一个临时表并像这样使用

Create Procedure Proc2 ( @Condition int) As 
BEGIN

create table #temp(col1 int, col2,....) -- similar to reseultset of proc1
insert into #temp 
execute Proc1 input1,input2
select * from #temp where column1 = @Condition 

END

如果列名未知,您可以使用OPENROWSET

Select 
           *
from 
          OPENROWSET('SQLOLEDB','Data Source=Server_name;Trusted_Connection=yes;
          Integrated Security=SSPI','Execute yourdb..proc1')

答案 1 :(得分:0)

如果您知道过程返回的结构,那么您只需创建临时表并将数据从存储过程结果集插入该临时表。

Create Table #Temp (Col INT , Col2 INT)

INSERT INTO  #Temp 
Exec Proc1 input1,input2

但是既然你已经提到过你不知道从存储过程返回的表的确切结构,你可以使用OPENQUERY进一步操作存储过程的结果集,就像这样....

SELECT  *  
FROM  OPENQUERY(YOURSERVERNAME, 'Proc1 input1,input2')
where column1 = @Condition