`
ioio
  • 浏览: 138215 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

存储过程使用游标-实例

 
阅读更多

/*
*房产税抽取
*创建时间: 2009-11-20
*创建人:李超
*/

create or replace procedure P_CS_FCS(SSSQ_Q_SK number default 20070101,
SSSQ_Z_SK number default 20070201)
as 
cursor cur_ysbnsr is
 select /*+index(ft_dj_fcdj IDX_FT_DJ_FCDJ_NSBM)*/
a.nsbm, a.nsrsbh, a.FCYZ, a.YNSEHJ,a.fcdjxh,a.NSR_ZGSWJG_DM
from ft_dj_fcdj a
where yxbz = 'Y'
and zxbz = 'N';     --所有应纳税人记录
v_nsbm number(20);  
v_nsrsbh number(20);
v_fcyz number(20,2);  
v_ynsehj number(20,2);
v_fcdjxh number(20);
v_nsrswjgdm varchar(11);
v_sysl number(20,2);  --适用税率
v_sjlx varchar2(5);   --数据类型(季度预缴数据:JD;年度合计数据:ND)
s_yjnse number(20,2);
s_pzjmse number(20,2);
s_sjjnse number(20,2);
s_yxz number(20,2);
s_yjnze_lastyear number(20,2);
begin  
 open cur_ysbnsr;  
  loop  
   fetch cur_ysbnsr into v_nsbm,v_nsrsbh,v_fcyz,v_ynsehj,v_fcdjxh,v_nsrswjgdm ;  
   --exit when cur_ysbnsr%notfound;  
   --计算指定属期内应纳税总额,批准减免税额,计算余值
   select  sum(YJNSE) ,sum(PZJMSE) ,
   sum(SJJNSE) e,sum(YXZ) 
   into s_yjnse,s_pzjmse,s_sjjnse,s_yxz
   from ft_sb_fcs t
    where  t.nsrsbh = v_nsrsbh
    and t.cqzh=v_fcdjxh
    and t.sssq_q_sk > =SSSQ_Q_SK
    and t.sssq_z_sk < =SSSQ_Z_SK;
    --查找适用税率
    select distinct nvl(sysl,0)
    into v_sysl
    from ft_sb_fcs
    where nsrsbh=v_nsrsbh
    and cqzh=v_fcdjxh
    and yxbz='Y'
    and sssq_q_sk>=SSSQ_Q_SK
    and sssq_z_sk<=SSSQ_Z_SK;
   --查找上半年应纳税总额:判断当前属期所在年度是否有记录,如果有记录,则直接查找原有记录,
   --如果没有记录,则计算
   select SNYNSE into s_yjnze_lastyear from PG_CQ_FCS t
   where SSSQ_Q_SK - t.SSSQ_Q_SK  <=1100  --是否是同一年度
   and NSRDZXH=v_nsrsbh;
   if(s_yjnze_lastyear<0) then
      --计算上一年度应缴纳金额
      --1.求上一年度时间
      --2.计算
   end if;
  
   --向表中出入数据
   insert into pg_cq_fcs(fcsbxh,
       nsrdzxh,
       nsr_swjg_dm,
       sssq_q_sk,
       sssq_z_sk,
       fcyz,
       jsyz,
       sysl,
       nynse,
       bqyj,
       bqjm,
       bqsj,
       snynse,
       sjlx)
       values
       (
       1,
       1,
       1,
       20090901,
       20091201,
       12.22,
       1.22,
       0.12,
       1111,
       22,
       11,
       22,
       33,
       22
       )
   --dbms_output.put_line('postype:'||v_nsbm||',v_fcyz:'||v_ynsehj);  
  end loop;  
  close cur_ysbnsr;  
dbms_output.put_line('---loop end---');  
 

end; 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics