第一种方法:
   select columnName into targetTableName from table,
   这种方法要求目标TABLE不存在,如果存在,系统会报错,如:
1 select * into #test1 from jobs
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


    当表中存在递增列时,应注意设置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

    第三种方法:从存储过程中取得值

 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

利用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

    注意:Sql server 2000中的Table结构具有诸多限制:
1、除了Select...into语句中的目的地之外,table变量可以用作Select语句中任何可以接收表的部分。
2、table变量可以用在insert语句中,但要初开insert从存储过程中收集信息值得情况
posted on 2007-12-03 20:07  不够谦虚  阅读(321)  评论(0)    收藏  举报