/*
*房产税抽取
*创建时间: 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;
分享到:
相关推荐
oracle job 存储过程 视图 游标 实例
oracle 的函数、存储过程、游标、简单实例 oracle常用语句oracle 的函数、存储过程、游标、简单实例 oracle常用语句
存储过程调用 Function 并使用 游标循环得到每一条数据然后更新本条数据。初学代码写的不是很好,希望能给初学存储过程的兄弟们提供一点借鉴哦。
详细介绍了存储过程和游标的使用 带N多个实例 一幕了然 学习存储过程必备
描述了一个很全的数据库开发过程,并有SQL脚本,包括存储过程和游标等实例
CREATE PROCEDURE getUserInfo(in date_day datetime)— — 实例— MYSQL存储过程名为:getUserInfo— 参数为:date_day日期格式:2008-03-08— BEGINdeclare _userName varchar(12); — 用户名declare _chinese int...
有俩种方法: 一种是声明系统游标,一种是声明自定义游标,然后后面操作一样,参数类型为 in out 或out (1)声明个人系统游标.(推荐) 代码如下: create or replace p_temp_procedure ( cur_arg out sys_refcursor;...
本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。
用callabledStatement调用oracle存储过程实用例子(IN OUT 传参数包括游标类型)
本文实例讲述了Mysql存储过程中游标的用法。分享给大家供大家参考。具体如下: 1. 批量插入商户路由关联数据: DELIMITER $$ USE `mmm_mac`$$ DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE ...
mysql的存储过程、游标 、事务实例详解 下面是自己曾经编写过的mysql数据库存储过程,留作存档,以后用到的时候拿来参考。 其中,涉及到了存储过程、游标(双层循环)、事务。 【说明】:代码中的注释只针对当时业务...
oracle应用经典实例,oracle操作,存储过程,游标,触发器,oracle帮助文档,oracleAPI
实现了游标的一些使用方法,两种定义与使用的方法,存储过程的定义一使用调用返回结果集的存储过程
对sqlserver中游标与存储过程的使用方法,及实例方法
主要介绍了navicat中创建存储过程、触发器和使用游标的简单实例,需要的朋友可以参考下
几程SQL游标的使用技巧.