如何将存储过程执行后的结果集放入临时表

4 views
Skip to first unread message

dinas...@gmail.com

unread,
Mar 29, 2007, 10:54:29 PM3/29/07
to WEB开发技巧回收站
zjcxc(邹建)回复于 2004-12-15 08:11:59 得分 20

select * into #z from OPENROWSET(
'SQLOLEDB',
'SERVER=(local);uid=sa;pwd=sa的密码;Database=存储过程所在的库名','SET
FMTONLY OFF; exec 要调用的存储过程名') as a

selet * from #z


NinGoo's Notes的原创BLOG:

如果能够得到存储过程结果集的表结构
insert into #tmp exec sp_who

否则
select * into #tmp from OPENROWSET(
'SQLOLEDB',
'SERVER=server;uid=sa;pwd=sapwd;Database=master','exec 存储过程名') as a
如果存储过程中用到临时表,要用set fmtonly off
select * into #tmp from OPENROWSET(
'SQLOLEDB',
'SERVER=server;uid=sa;pwd=sapwd;Database=master','SET FMTONLY OFF;
exec 存储过程名') as a

dinas...@gmail.com

unread,
Mar 29, 2007, 10:57:25 PM3/29/07
to WEB开发技巧回收站
以下是CSDN中 txlicenhe(马可) 的总结性回帖: :)

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 a

2: 如果存储过程中用到临时表,要用set fmtonly off


select * into #z from OPENROWSET(
'SQLOLEDB',

Reply all
Reply to author
Forward
0 new messages