第一种方法: 把exec(@sql) 做成存储过程,再调用select * into t from openrowset('sqloledb','ip';'sa';'','set fmtonly off;exec 库名.dbo.存储过程(参数)') 第二种方法:直接在exce()写插入语句exec('select * into 表名' +@sql)以前看别人写的,你测试下吧
不能用select 其实,在客户端用ado直接执行存储过程返回结束,与用select 返回结果是一样的 只不过存储过程返回的结果不能更新.对表插入语句 insert into 可用insert into 表 exec 存储过程 来插入记录
create table #Temp(...) insert into #Temp exec sp_Test select * from #Temp
不能。 你可建个临时表,把查询的结果放到里面,再调用。 --定义临时表@table declate @table table(id int,name varchar(10),add varchar(50))--把查询结果插入到临时表@table insert into @table (id,name,add) select id,name,add from sp_Test --读取 select * from @table
from openrowset('sqloledb','ip';'sa';'','set fmtonly off;exec 库名.dbo.存储过程(参数)')
第二种方法:直接在exce()写插入语句exec('select * into 表名' +@sql)以前看别人写的,你测试下吧
其实,在客户端用ado直接执行存储过程返回结束,与用select 返回结果是一样的 只不过存储过程返回的结果不能更新.对表插入语句 insert into
可用insert into 表 exec 存储过程
来插入记录
insert into #Temp exec sp_Test
select * from #Temp
你可建个临时表,把查询的结果放到里面,再调用。
--定义临时表@table
declate @table table(id int,name varchar(10),add varchar(50))--把查询结果插入到临时表@table
insert into @table (id,name,add)
select id,name,add from sp_Test
--读取
select * from @table
--将存贮过程返回信息装入临时表的方法示例:
use northwind--创建存贮过程
create proc sp_test
as
select * from Customers--创建一个临时表,以便装入数据
CREATE TABLE [#Temp] (
[CustomerID] [nchar] (5),
[CompanyName] [nvarchar] (40) ,
[ContactName] [nvarchar] (30),
[ContactTitle] [nvarchar] (30),
[Address] [nvarchar] (60) ,
[City] [nvarchar] (15) ,
[Region] [nvarchar] (15) ,
[PostalCode] [nvarchar] (10) ,
[Country] [nvarchar] (15) ,
[Phone] [nvarchar] (24) ,
[Fax] [nvarchar] (24)
)--将存贮过程结果装入临时表
insert into #Temp exec sp_Test--查看临时表
select * from #Temp--删除临时表
drop table #temp
--------------------
select 语句并不支持呀.insert into 是可以支持这种用法的.