--首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' --查询 select * into #tb FROM openquery(ITSV , 'exec dbname.dbo.proc_name')
--结果放入一个全局变量中 select * into @@temp from 你的结果集
--如何将动态exec执行结果放入变量中?-------------------------------------------------------------------------------- --例1 declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from a1 'exec sp_executesql @sqls,N'@a int output',@num outputselect @num ------------------------------------------------------------------------例2 DECLARE @min VARCHAR(20) DECLARE @oldDate VARCHAR(20) DECLARE @sqls nvarchar(4000)set @min='name' set @sqls='select @a='+@min+' from dbo.fbase'EXEC sp_executesql @sqls,N'@a varchar(20) output',@oldDate output select @oldDate --------------------------------------------------------------------------------
例如:tb表 a b ----------- -------------------- 1 北京;上海; 2 广东;福建;广西;create proc 存储过程名 as begin select * from tb endgocreate table #t(a int ,b varchar(20)) insert into #t exec 存储过程名 select * from #t /* a b ----------- -------------------- 1 北京;上海; 2 广东;福建;广西; */ drop table #t--或者 SELECT * INTO MyTable FROM OPENROWSET('SQLSERVER', 'server=.;trusted_connection=yes','exec 存储过程名')
create table #t() -- 你存储过程返回的 表结构insert into #t
exec pr_xxxxxxx --执行你的存储过程
不用定义字段
貌似没有你的存储过程可以 用 select 执行?如果非的用select 执行,只能在你的存储过程内部 去生辰临时表了
exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址'
--查询
select * into #tb
FROM openquery(ITSV , 'exec dbname.dbo.proc_name')
select * into @@temp from 你的结果集
--例1
declare @num int, @sqls nvarchar(4000)
set @sqls='select @a=count(*) from a1 'exec sp_executesql @sqls,N'@a int output',@num outputselect @num
------------------------------------------------------------------------例2
DECLARE @min VARCHAR(20)
DECLARE @oldDate VARCHAR(20)
DECLARE @sqls nvarchar(4000)set @min='name'
set @sqls='select @a='+@min+' from dbo.fbase'EXEC sp_executesql @sqls,N'@a varchar(20) output',@oldDate output
select @oldDate
--------------------------------------------------------------------------------
例如:tb表
a b
----------- --------------------
1 北京;上海;
2 广东;福建;广西;create proc 存储过程名
as
begin
select * from tb
endgocreate table #t(a int ,b varchar(20))
insert into #t
exec 存储过程名
select * from #t
/*
a b
----------- --------------------
1 北京;上海;
2 广东;福建;广西;
*/
drop table #t--或者
SELECT * INTO MyTable
FROM OPENROWSET('SQLSERVER', 'server=.;trusted_connection=yes','exec 存储过程名')