第一种方法:
select columnName into targetTableName from table,
这种方法要求目标TABLE不存在,如果存在,系统会报错,如:
第二种方法:insert into targetTable(column1,column2....) select * from table 如:
当表中存在递增列时,应注意设置identity_insert 为on,如:
第三种方法:从存储过程中取得值
利用table变量接收记录:
注意:Sql server 2000中的Table结构具有诸多限制:
1、除了Select...into语句中的目的地之外,table变量可以用作Select语句中任何可以接收表的部分。
2、table变量可以用在insert语句中,但要初开insert从存储过程中收集信息值得情况
select columnName into targetTableName from table,
这种方法要求目标TABLE不存在,如果存在,系统会报错,如:
1 select * into #test1 from jobs
2 select * from #test1
3 go
4
2 select * from #test1
3 go
4
第二种方法:insert into targetTable(column1,column2....) select * from table 如:
1
2 create table #test2
3 (
4 job_id int,
5 job_desc varchar(200),
6 min_lvl int,
7 max_lvl int
8 )
9 go
10 insert into #test2(job_id,job_desc,min_lvl,max_lvl) select * from jobs
11 go
12 select * from #test2
2 create table #test2
3 (
4 job_id int,
5 job_desc varchar(200),
6 min_lvl int,
7 max_lvl int
8 )
9 go
10 insert into #test2(job_id,job_desc,min_lvl,max_lvl) select * from jobs
11 go
12 select * from #test2
当表中存在递增列时,应注意设置identity_insert 为on,如:
1 /*改变列属性为递增列*/
2 alter table #test2 drop column job_id
3 alter table #test2 add job_id int identity
4 delete from #test2
5 go
6 set identity_insert #test2 on
7 insert into #test2(job_id,job_desc,min_lvl,max_lvl) select * from jobs
8 set identity_insert #test2 off
9 go
10 select * from #test2
2 alter table #test2 drop column job_id
3 alter table #test2 add job_id int identity
4 delete from #test2
5 go
6 set identity_insert #test2 on
7 insert into #test2(job_id,job_desc,min_lvl,max_lvl) select * from jobs
8 set identity_insert #test2 off
9 go
10 select * from #test2
第三种方法:从存储过程中取得值
1 create proc getAllInfo
2 as
3 select * from jobs
4 go
5
6 delete from #test2
7 go
8 set identity_insert #test2 on
9 insert into #test2(job_id,job_desc,min_lvl,max_lvl)
10 execute getAllInfo
11 set identity_insert #test2 off
12 go
13 select * from #test2
2 as
3 select * from jobs
4 go
5
6 delete from #test2
7 go
8 set identity_insert #test2 on
9 insert into #test2(job_id,job_desc,min_lvl,max_lvl)
10 execute getAllInfo
11 set identity_insert #test2 off
12 go
13 select * from #test2
利用table变量接收记录:
1 /*应该尽可能使用table变量而不是临时表,table所花费的额定开销更小,因此也更快一些*/
2 declare @test23 table
3 (
4 job_id int,
5 job_desc varchar(200),
6 min_lvl int,
7 max_lvl int
8 )
9 insert into @test23(job_id,job_desc,min_lvl,max_lvl) select * from jobs
10 select * from @test23
11 go
2 declare @test23 table
3 (
4 job_id int,
5 job_desc varchar(200),
6 min_lvl int,
7 max_lvl int
8 )
9 insert into @test23(job_id,job_desc,min_lvl,max_lvl) select * from jobs
10 select * from @test23
11 go
注意:Sql server 2000中的Table结构具有诸多限制:
1、除了Select...into语句中的目的地之外,table变量可以用作Select语句中任何可以接收表的部分。
2、table变量可以用在insert语句中,但要初开insert从存储过程中收集信息值得情况
浙公网安备 33010602011771号