修改学籍异动的storeprocedure

修改原因:

 ydid总是有重复值,原来系统不是直接在xjydjzb中更新数据,而是在一个keytable中记录上一次的最大的ydid。--今天在错误信息反馈中才知道这个原理 。

所以直接在keytable中找ydid的最大值。

 

CREATE   procedure  sp_xjyd
@xhjm   char ( 10 ), @yddm   char ( 2 )
as
if   exists ( select  xhjm  from  xsjbdab  where  xhjm = @xhjm )
begin
declare   @ydid   varchar ( 20 ), @xh   varchar ( 20 ), @bdm   varchar ( 20 ), @xslxdm   varchar ( 20 ), @xslbdm   varchar ( 20 )
declare   @nj   varchar ( 20 ), @xxjdm   varchar ( 20 ), @yxjdm   varchar ( 20 ), @jhid   varchar ( 20 ), @sxdm   varchar ( 20 )
declare   @fxdm   varchar ( 20 ), @gzzdm   varchar ( 20 ), @ydlxbz   varchar ( 20 )
declare   @czn   varchar ( 20 ), @czy   varchar ( 20 ), @czr   varchar ( 20 ), @dyr   varchar ( 20 )
declare   @zyydbj   varchar ( 3 ), @sxydbj   varchar ( 3 ), @fxydbj   varchar ( 20 ), @ydqxhqm   varchar ( 20 ), @ybyzg   varchar ( 20 ), @xbyzg   varchar ( 20 )
declare   @day   datetime

set   @day = getdate ()
select   @ydid = cast (( max (table_id) + 1 as   varchar ( 20 ))  from  keytable  where  table_name = ' xjydjzb '
if   @yddm = ' 31 '  
set   @xxjdm = ' 5 '
else   if    @yddm = ' 21 '  
     
set   @xxjdm = ' 3 '
    
else   if    @yddm = ' 12 '  
     
set   @xxjdm = ' 1 '
set   @dyr = ' LJC '

select   @xh = xh, @bdm = bdm, @xslxdm = xslxdm, @xslbdm = xslbdm, @nj = nj, @yxjdm = xjztdm, @jhid = jhid, @sxdm = dwdm,
       
@fxdm =left (dwdm, 5 ), @gzzdm =left (dwdm, 3 ), @ydlxbz = @yddm , @czn = datepart (YYYY, @day ),
       
@czy = datepart (MM, @day ), @czr = datepart (DD, @day ), @fxydbj = ' 2 ' , @ydqxhqm = xh,
       
@ybyzg = ' Y ' , @xbyzg = ' N ' , @zyydbj = ' N ' , @sxydbj = ' Y '
from  xsjbdab
where  xhjm = @xhjm

-- bz,ydqxhjm不设值
insert   into  xjydjzb(ydid,xh,xbdm,xxslxdm,xxslbdm,xnj,xxjdm,xjijhid,xsxdm,xfxdm,xgzzdm,ybdm,yxslxdm
,yxslbdm,ynj,yxjdm,yjxjhid,ysxdm,yfxdm,ygzzdm,ydlxbz,czn,czy,czr,dyr,zyydbj,sxydbj,fxydbj,ydqxhqm,ybyzg,xbyzg)
values ( @ydid , @xh , @bdm , @xslxdm , @xslbdm , @nj , @xxjdm , @jhid , @sxdm , @fxdm , @gzzdm , @bdm , @xslxdm
,
@xslbdm , @nj , @yxjdm , @jhid , @sxdm , @fxdm , @gzzdm , @ydlxbz , @czn , @czy , @czr , @dyr , @zyydbj , @sxydbj ,
 
@fxydbj , @ydqxhqm , @ybyzg , @xbyzg )

update  xsjbdab
set  xjztdm = @xxjdm
where  xhjm = @xhjm

update  keytable
set  table_id = cast ( @ydid   as  numeric( 9 ))  where  table_name = ' xjydjzb '

end
else
  
print   ' xhjm not exist! '
GO

转载于:https://www.cnblogs.com/samsonleung/archive/2008/10/24/1318702.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值