如何在SQL SERVER中 执行存储过程,然后把得到的数据导入到一张表中

pepsipanli 2008-12-15 10:22:19
我有个存储过程, 执行 EXEC 可以得到它的最终数据集, 我想把它的生成的数据, 可以直接导入或生成到一张表中, 不知道有什么好的办法? 谢谢
...全文
608 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
水族杰纶 2008-12-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pepsipanli 的回复:]
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')


我安装的SQL没有设用户名,密码, 是按WINDOWS模式装的, 该怎么样写?
[/Quote]
--如果結果集,列數,類型已知
if object_id('tempdb..#')is not null drop table #
go
create table #(ID int ,col1 varchar(10),col2 varchar(10).........)
insert # exec 存儲過程
dawugui 2008-12-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 pepsipanli 的帖子:]
我有个存储过程, 执行 EXEC 可以得到它的最终数据集, 我想把它的生成的数据, 可以直接导入或生成到一张表中, 不知道有什么好的办法? 谢谢
[/Quote]
直接在存储过程的语句中使用:

select * into tb2 from tb1 --表tb2不存在
insert into tb2 select * from tb1 --表tb2存在
colin9360 2008-12-15
  • 打赏
  • 举报
回复
不用那么麻烦吧,比如建个临时表#table,这个#table的列要和存储过程的数据集列数要相同,然后insert into #table(....) exec 存储过程 '参数'....
pepsipanli 2008-12-15
  • 打赏
  • 举报
回复
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')


我安装的SQL没有设用户名,密码, 是按WINDOWS模式装的, 该怎么样写?

hyrongg 2008-12-15
  • 打赏
  • 举报
回复
直接

CREATE PROCEDURE SP_TEST
AS
SELECT 1 UNION
SELECT 2 UNION
SELECT 3

测试

DECLARE @T TABLE(IDX INT)
INSERT INTO @T
EXEC SP_TEST

SELECT * FROM @t

结果

1
2
3
ljhcy99 2008-12-15
  • 打赏
  • 举报
回复
用游标 读取每条记录,然后追加到一个表里 。

Declare @num int;
DeClare cur Curosor for
select num from table1;
open cur;
fectch next from cur into @num;
while @@fetch_status = 0
begin
insert into table2(num)
valuse(@num);
fectch next from cur into @num;
end
水族杰纶 2008-12-15
  • 打赏
  • 举报
回复
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')
pepsipanli 2008-12-15
  • 打赏
  • 举报
回复
我本来没有这张表的, 主要用来生成做"同步复制"功能用的. 存储过程生成的列很多,我自己建了张表, 设了相同的列名, 但使用insert into #table exec 存储过程, 它就报错了: Insert Error: Column name or number of supplied values does not match table definition.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧