据我所知; 我想做的事情在sql中是不可能的,但值得问你们.
假设我有一个存储过程abc,它返回列Id和Value.由于功能原因,此存储过程主要由其他部门使用,我将不时地使用它来进行数据检查.
所以使用它作为我的存储过程的一部分:
DECLARE @tABC TABLE ( ID INT, Value DECIMAL(12,2) ) INSERT INTO @tABC EXEC OtherDb.DataProd.abc
Oky因此现在可以完美地工作,但是如果他们改变了存储过程的结构呢?
在存储过程中添加或删除列会破坏我的代码,因此有一种方法可以使我的代码更加灵活.
我最后一次绝望的尝试是这样的:
WITH tempTable AS ( EXEC OtherDb.DataProd.abc ) SELECT ID, Value FROM tempTable
这显然是悲惨地失败了.
SELECT * INTO #TempTable FROM OPENROWSET ('SQLNCLI','Server=(local)\SQL2008R2;Trusted_Connection=yes;', 'EXEC OtherDb.DataProd.abc') SELECT * FROM #TempTable
插入临时表.我知道这可以在2008年及以上工作,不确定2005年.您的临时表列必须与您的存储过程列匹配.
create table #mytable (custid int,company varchar(50),contactname varchar(50) , phone varchar(50),address1 varchar(50) , address2 varchar(50),city varchar(50) ,st varchar(2),zip varchar(20)) insert into #mytable (custid,company,contactname,phone,address1,address2,city,st,zip) exec dbo.sp_Node_CustomerList_wService @segid = 1 select * from #mytable where custid = 5 drop table #mytable