如何给员工分配同样多的资料(多列游标,局部游标)

create         procedure  Test
as

declare my_cursor cursor local --scroll表示可随意移动游标指针(否则只能向前),dynamic表示可以读写游标(否则游标只读)
for
select workerid,count(1) tep from worker group by workerid
order by count(1)
 open my_cursor-----全部客户电话号码
declare @workerid sysname
declare @mycount int
declare @count int
declare @more int
declare @sql varchar(2000)
set @count=(select count(*) from powercustomer)/(select count(distinct workerid) from worker)
set @more=(select count(*) from powercustomer)%(select count(distinct workerid) from worker)

begin
truncate table temptable
insert into temptable(phonenum) select distinct phonenum from powercustomer where phonenum not in (select distinct phonenum from worker)

end
begin
fetch next from my_cursor into @workerid,@mycount
while(@@fetch_status=0)
begin
if @more>1
begin
   set @sql='update temptable set workerid='+@workerid+' where phonenum in (select top '+Convert(varchar,(@count-@mycount+1))+' phonenum from temptable where workerid is  null)'
   set @more=@more-1
end

else if @more=0
begin
   set @sql='update temptable set workerid='+@workerid+' where phonenum in (select top '+Convert(varchar,@count-@mycount)+' phonenum from temptable where  workerid is  null)'
end
exec(@sql)
--commit
fetch next from my_cursor into @workerid,@mycount
end
close my_cursor
end 

发布了29 篇原创文章 · 获赞 1 · 访问量 23万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章