我有一个程序,它会从临时表中返回数据。临时表结构可能会有所不同,具体取决于程序的输入参数。这个程序是一般程序,所以我不能修改这个。
我的要求是我想使用返回临时表数据从另一个程序进行一些计算。是否有可能实现这一点????
要求是这样的事情
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
答案 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