日期:2014-05-17  浏览次数:20423 次

关于存储过程保存到临时表的问题

create table #tName([date] varchar(10),[n] int )
insert into #tabname exec dbo.MChart
Select * from  #tName

我需要在一个存储过程中调用另外一个存储过程的结果。
当明确的知道被调用的存储过程中返回表的结构时,
我可以用上面的方法得到临时表。
但是现在的难题是,
这个被调用的存储过程是返回一个 列名会根据传的参数不同而改变 的表

这样我该如何把这个结果保存到临时表里?

------解决方案--------------------
用动态sql也未必能实现
------解决方案--------------------
动态SQL就解决了。交给楼下。
------解决方案--------------------
动态定义一个表结构


create table #tName([date] varchar(10),[n] int )
insert into #tName exec dbo.MChart
Select * from  #tName
这些都放到动态语句里面处理

或者使用openrowset 之类的
SELECT a.*
INTO #tName
FROM OPENROWSET('SQLNCLI', 'Server=Seattle1;Trusted_Connection=yes;','exec 数据库.dbo.MChart') AS a;


不推荐第二种做法


------解决方案--------------------
引用:
动态定义一个表结构


create table #tName([date] varchar(10),[n] int )
insert into #tName exec dbo.MChart
Select * from  #tName
这些都放到动态语句里面处理

或者使用openrowset 之类的
SELECT a.*
INTO #tName
……

可以动态拼接个全局临时表表量吧##t_abc
------解决方案--------------------
帮顶一下看看