declare  cursor1 cursor for select 部门id,部门名称  from bm 
declare @i int,@j varchar(100)
open cursor1
fetch cursor1 into @i,@j
while @@fetch_status=0
begin
  exec('select 部门id,姓名 into '+@j+'员工表 from 员工表 where 部门id='+cast(@i as varchar(10)))
  fetch cursor1 into @i,@j
end
close cursor1
deallocate cursor1

解决方案 »

  1.   

    declare  cursor1 cursor for select 部门id,部门名称  from bm 
    declare @i int,@j varchar(100),@SQLString varchar(1000)
    open cursor1
    fetch cursor1 into @i,@j
    while @@fetch_status=0
    begin
      set @SQLString='select 部门id,姓名 into '+@j+'员工表 from 员工表 where 部门id='+cast(@i as varchar(10))
      exec(@SQLString)
      fetch cursor1 into @i,@j
    end
    close cursor1
    deallocate cursor1
      

  2.   


    declare  cursor1 cursor for select 部门id,部门名称  from bm 
    declare @i int,@j varchar(100),@SQLString varchar(1000)
    open cursor1
    fetch cursor1 into @i,@j
    while @@fetch_status=0
    begin
      select @SQLString='select '''+rtrim(@j)+'员工表'''
      exec(@SQLString)
      set @SQLString='select a.部门id,b.部门名称,a.姓名 from 员工表 a,bm b where a.部门id=b.部门id and a.部门id= '+cast(@i as varchar(10))
      exec(@SQLString)
      fetch cursor1 into @i,@j
    end
    close cursor1
    deallocate cursor1
      

  3.   

    declare @id int
    declare @name char(6)
    select @id = min(部门id) - 1 from 部门表
    while exists (select * from 部门表 where 部门id > @id)
    begin
      select top 1 @id = 部门id, @name = 部门名称 from 部门表 where 部门id > @id order by 部门id
      exec('select * into '+@name+'员工表 from 员工表 where 部门id = '+cast(@id as varchar))
    end