簡單存儲過程和遊標使用案例
create procedure [dbo].[proc_zl_score]
@zl_id varchar(20),@lx_name varchar(20)
as
update ZL
set ZL.ZL_score=ZL_lx_score
from ZL,ZL_LX
where ZL.ZL_lx_id=ZL_LX.ZL_lx_id
and ZL_LX.ZL_lx_name=@lx_name and ZL.ZL_id=@zl_id
create procedure [dbo].[proc_z_zuo_score]
@z_id varchar(20),
@words float,
@lb_name varchar(20)
as
update Z_ZUO
set Z_ZUO.Z_score=Z_words*Z_LB_score
from Z_ZUO,Z_LB
where Z_ZUO.Z_LB_id=Z_LB.Z_LB_id
and Z_LB.Z_LB_name=@lb_name and Z_words=@words and Z_ZUO.Z_id=@z_id
create procedure [dbo].[proc_lw_score]
@lw_id varchar(12),
@sl_shu varchar(6),
@kw_name varchar(20)
as
update L_W
set L_W.LW_score=KW_JB.KW_score+SL.SL_score
from L_W,KW_JB,SL
where L_W.KW_id=KW_JB.KW_id and L_W.SL_id=SL.SL_id
and KW_JB.KW_name=@kw_name and SL_shu=@sl_shu and L_W.LW_id=@lw_id
create procedure [dbo].[pro_kwjb1]
@dj_name varchar(20),
@score float
as
declare @total_score float,@ZG_id varchar(20),@LW_id varchar(20)
declare mycursor cursor for select ZG_id,LW_id from ZG_LW
begin
open mycursor
fetch next from mycursor into @ZG_id,@LW_id
while @@fetch_status=0
begin
--修改刊物級別得分規則,重新計算(個人得分)
select @total_score=(@score+SL.SL_score)*CG_JS.xi_shu
from L_W,SL,KW_JB,CG_JS,ZG_LW
where L_W.LW_id=ZG_LW.LW_id and L_W.SL_id=SL.SL_id and L_W.KW_id=KW_JB.KW_id and KW_JB.KW_name=@dj_name and L_W.LW_id=@LW_id and CG_JS.rank=ZG_LW.F_G and CG_JS.num=L_W.LW_rs and ZG_LW.ZG_id=@ZG_id
update ZG_LW set Score=@total_score from L_W,SL,KW_JB,ZG_LW where L_W.LW_id=@LW_id and ZG_id=@ZG_id and L_W.LW_id=ZG_LW.LW_id and L_W.SL_id=SL.SL_id and L_W.KW_id=KW_JB.KW_id and KW_JB.KW_name=@dj_name
--修改刊物級別得分規則,重新計算(論文總得分)
select @total_score=@score+SL.SL_score
from L_W,SL,KW_JB
where L_W.SL_id=SL.SL_id and L_W.KW_id=KW_JB.KW_id and KW_JB.KW_name=@dj_name and L_W.LW_id=@LW_id
update L_W set LW_score=@total_score from L_W,SL,KW_JB
where L_W.SL_id=SL.SL_id and L_W.KW_id=KW_JB.KW_id and KW_JB.KW_name=@dj_name and L_W.LW_id=@LW_id
fetch next from mycursor into @ZG_id,@LW_id
end
close mycursor
deallocate mycursor
end