如何給員工分配同樣多的資料(多列遊標,局部遊標)

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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章