8 个解决方案
#1
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')
#2
用游标 读取每条记录,然后追加到一个表里 。
如
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
如
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
#3
直接
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
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
#4
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')
我安装的SQL没有设用户名,密码, 是按WINDOWS模式装的, 该怎么样写?
我安装的SQL没有设用户名,密码, 是按WINDOWS模式装的, 该怎么样写?
#5
不用那么麻烦吧,比如建个临时表#table,这个#table的列要和存储过程的数据集列数要相同,然后insert into #table(....) exec 存储过程 '参数'....
#6
直接在存储过程的语句中使用:
select * into tb2 from tb1 --表tb2不存在
insert into tb2 select * from tb1 --表tb2存在
#7
--如果結果集,列數,類型已知
if object_id('tempdb..#')is not null drop table #
go
create table #(ID int ,col1 varchar(10),col2 varchar(10).........)
insert # exec 存儲過程
#8
我本来没有这张表的, 主要用来生成做"同步复制"功能用的. 存储过程生成的列很多,我自己建了张表, 设了相同的列名, 但使用insert into #table exec 存储过程, 它就报错了:
Insert Error: Column name or number of supplied values does not match table definition.
#1
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')
#2
用游标 读取每条记录,然后追加到一个表里 。
如
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
如
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
#3
直接
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
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
#4
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码','exec 存儲過程名')
我安装的SQL没有设用户名,密码, 是按WINDOWS模式装的, 该怎么样写?
我安装的SQL没有设用户名,密码, 是按WINDOWS模式装的, 该怎么样写?
#5
不用那么麻烦吧,比如建个临时表#table,这个#table的列要和存储过程的数据集列数要相同,然后insert into #table(....) exec 存储过程 '参数'....
#6
直接在存储过程的语句中使用:
select * into tb2 from tb1 --表tb2不存在
insert into tb2 select * from tb1 --表tb2存在
#7
--如果結果集,列數,類型已知
if object_id('tempdb..#')is not null drop table #
go
create table #(ID int ,col1 varchar(10),col2 varchar(10).........)
insert # exec 存儲過程
#8
我本来没有这张表的, 主要用来生成做"同步复制"功能用的. 存储过程生成的列很多,我自己建了张表, 设了相同的列名, 但使用insert into #table exec 存储过程, 它就报错了:
Insert Error: Column name or number of supplied values does not match table definition.