两种方法: 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
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
create table #tmp(col1 int,col2 varchar(30),...)
insert into #tmp(col1,col2,...) exec sp_test
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
问题提出: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