insert into #tmp(a,b,c)exec sp_test

解决方案 »

  1.   

    知道返回的结构,可以
    create table #tmp(col1 int,col2 varchar(30),...)
    insert into #tmp(col1,col2,...) exec sp_test
      

  2.   

    两种方法:
    1.先建表再执行存储过程:
    create table #t(...)
    insert into #t exec B
    select * from #t
    drop table #t  2.直接select into到临时表: 
    select * into #t from OPENROWSET(
    'SQLOLEDB','SERVER=servername;uid=sa;pwd=123;Database=testdb',
    'SET FMTONLY OFF;set nocount on;exec B') as a
    select * from #t
    drop table #t 
      

  3.   

    http://expert.csdn.net/Expert/topic/3016/3016902.xml?temp=.9715082
    问题提出:ghosthjt (天煞孤星) 
    解答:Yang_(扬帆破浪), j9988(j9988)如果能够方便的得到存储过程结果集的表结构。那存储过程的使用就方便了很多了。比如:
    insert into #tmp exec sp_who
    要执行这一句,前提必须知道sp_who的结果集的表结构。
    这样的语句又不能运行:select * into #tmp from exec sp_who解答:
    1:
    select * into #z from OPENROWSET(
    'SQLOLEDB',
    'SERVER=server;uid=sa;pwd=sapwd;Database=master','exec sp_who') as a2: 如果存储过程中用到临时表,要用set fmtonly off
    select * into #z from OPENROWSET(
    'SQLOLEDB',
    'SERVER=server;uid=sa;pwd=sapwd;Database=master','SET FMTONLY  OFF; exec 存储过程名') as a