sql 工作典型案例(2)

2019-04-21 15:01

WHERE ZS.NSRNBM=DJ.NSRNBM(+) AND ZS.ZSJG_DM = SWJG1.SWJG_DM

AND SWJG1.SJSWJG_DM=SWJG2.SWJG_DM

AND ZS.LRRY_DM = SWRY.SWRY_DM(+) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1) AND (1=1)

AND ZS.ZF_BJ='0' AND (1=1) AND (1=1) AND (1=1)

AND EXISTS (SELECT 1

FROM T_XT_SWRY_CX CX

WHERE (DJ.GLJG_DM=CX.SWJG_DM OR ZS.GLJG_DM=SWJG_DM) AND CX.SWRY_DM ='26200000000' ) ) A

GROUP BY ROLLUP() HAVING (1=1)

过程create or replace procedure P_FP_MQKPMX_SL as /* 此过程用于更新门前开票总税率

2015-03-25 李宝瑜 */

sll number(16, 6);

type zjtab_type is varray(5) of libaoyu.t_zj_b%rowtype; zjtab zjtab_type; cursor v_cur is

select * from libaoyu.t_zj_b ;

v_rows int := 5; v_count int := 0; begin

/*清空表*/

delete from libaoyu.t_zj_b; commit;

/*插入开票信息相关联数据,便于更新数据*/ insert /*Append*/ into libaoyu.t_zj_b b

select distinct x.dzsph_xh, x.pzzl_dm, x.pzzb_dm, x.pzhm, x.pz_xh from (select distinct qk.dzsph_xh, qk.pzzl_dm, qk.pzzb_dm, mx.pzhm, xj.pz_xh

from t_zs_pzsyqk qk, t_fp_mqkpmx mx, t_zs_xjjkmx xj where mx.pzzl_dm = qk.pzzl_dm and mx.pzzb_dm = qk.pzzb_dm and mx.pzhm = qk.pzhm and mx.sl is null

and mx.lr_sj>=sysdate-1 and xj.dzsph_xh = qk.dzsph_xh and qk.zfr_dm is null and qk.zf_rq is null and xj.zf_bj = '0' and xj.pz_xh is not null union

select distinct qk.dzsph_xh, qk.pzzl_dm, qk.pzzb_dm, mx.pzhm, zj.pz_xh

from t_zs_pzsyqk qk, t_fp_mqkpmx mx, t_zs_zjjkmx zj where mx.pzzl_dm = qk.pzzl_dm and mx.pzzb_dm = qk.pzzb_dm and mx.lr_sj>=sysdate-1 and mx.sl is null and qk.zfr_dm is null and qk.zf_rq is null and zj.zf_bj = '0' and mx.pzhm = qk.pzhm

and zj.dzsph_xh = qk.dzsph_xh and zj.pz_xh is not null) x; commit;

open v_cur; loop

fetch v_cur bulk collect into zjtab limit v_rows; exit when v_cur%notfound;

for i in 1 .. (v_cur%rowcount - v_count) loop /*计算总税率*/

select max (x.sl) into sll from

(select min(nvl(round(decode(a.js_yjj,0,0,(a.zje + b.fsje) /a.js_yjj),2),0))as sl

from (select yz.pz_xh, yz.zsxm_dm, yz.zspm_dm, yz.yzsf_je, yz.js_yj,

sum(yz.js_yj) over(partition by zsxm_dm) js_yjj, sum(yz.yzsf_je) over(partition by null) zje, sum(yz.js_yj) over(partition by null) zjsyj from t_zs_yzpz yz

where yz.pz_xh =zjtab(i).pz_xh

and yz.zsxm_dm not in ('16', '61', '90', '92') ) a,

(select nvl(sum(yz1.yzsf_je),0) fsje from t_zs_yzpz yz1

where yz1.pz_xh =zjtab(i).pz_xh

and yz1.zsxm_dm in ('16', '61', '90', '92')) b where a.zsxm_dm ='02' union select

min(nvl(round(decode(c.js_yj,0,c.zjsyj,c.zje/c.js_yj),2),0)) as sl

from (select yz.pz_xh, yz.zsxm_dm, yz.zspm_dm, yz.yzsf_je, yz.js_yj,

sum(yz.yzsf_je) over(partition by null) zje, sum(yz.js_yj) over(partition by null) zjsyj from t_zs_yzpz yz

where yz.pz_xh = zjtab(i).pz_xh

and yz.zsxm_dm not in ('16', '61', '90', '92') ) c)x;

/*更新门前开票明细总税率*/

update t_fp_mqkpmx mx set mx.sl = sll

where mx.pzzl_dm = zjtab(i).pzzl_dm and mx.pzhm = zjtab(i).pzhm and mx.pzzb_dm = zjtab(i).pzzb_dm ; commit;

v_count := v_cur%rowcount; end loop; end loop; close v_cur;

exception

when others then rollback; declare

errmsg varchar2(32766); begin

errmsg := SQLERRM(SQLCODE); dbms_output.put_line(errmsg); end;

end P_FP_MQKPMX_SL;

create or replace procedure p_gs_kt_zwyth_xqjg(i_hsjgdm varchar2, /* i_kjnyqs date,

i_kjnyzz date,*/

i_czrydm varchar2) is

/*********************************************************************************

甘肃环境账务一体化加工过程,该过程仅对县区级核算机关进行报表撤账、抽取、加工、记账 过程说明:

--1、撤账:根据核算机关代码及会计年月进行撤销账簿操作。 --2、抽取:根据核算机关代码及会计年月进行数据抽取操作。 --3、加工:根据核算机关代码及会计年月进行数据加工操作。 --4、记账:根据核算机关代码及会计年月进行报表记账 李宝瑜 at 2015-05-13

*********************************************************************************/

l_kjny DATE; --会计年月(临时变量)

/* l_kjnyqs varchar2(10); --会计年月(临时变量) l_kjnyzz varchar2(10); --会计年月(临时变量)*/ v_hsjgdm varchar2(11); --核算机关代码 l_hsjgdm varchar2(11); --核算机关代码(临时)

v_yjbz char(1) default '0'; --记录月结标志,后续判断,如果月结标志为0则不进行报表加工。

begin

--核算机关定义

if i_hsjgdm is NULL or i_hsjgdm = '' then

RAISE_APPLICATION_ERROR(-20005, 'i_hsjgdm' || '不能为空'); else

v_hsjgdm := i_hsjgdm;

end if;

--会计年月起始定义

/* if i_kjnyqs is NULL or i_kjnyqs = '' or i_kjnyzz is NULL or i_kjnyzz = '' then

RAISE_APPLICATION_ERROR(-20006, 'i_kjnyqs,i_kjnyzz' || '不能为空'); else

l_kjnyqs := to_char(i_kjnyqs, 'yyyy-MM-dd'); l_kjnyzz := to_char(i_kjnyzz, 'yyyy-MM-dd');

end if;*/

--如果参数不为空则以参数取会计年月

EXECUTE IMMEDIATE 'TRUNCATE TABLE DB_ZGXT.T_GS_KT_ZWYTH_YTHCZXX'; --

清空账务一体化操作信息

commit;

--获取的核算机关

for jgxx in (select bbjg.hsjg_dm, bbjg.sjjg_dm from T_GS_KT_CS_ZWYTH_XQBBJG bbjg

where not exists(select 1 from T_GS_KT_ZWYTH_YTHCZXX xx where bbjg.hsjg_dm=xx.hsjg_dm ) ) loop --区县级核算机关报表处理

--1.如果传入的核算机关是县区级,v_hsjgdm取县区级核算机关代码

--2.如果传入的核算机关是市级,v_hsjgdm取市所对应的县区级核算机关代码 --3.如果传入的核算机关是省级,v_hsjgdm取所有的县区级核算机关代码 if v_hsjgdm = jgxx.hsjg_dm or v_hsjgdm = jgxx.sjjg_dm or v_hsjgdm = '262000000' then

select jgxx.hsjg_dm into l_hsjgdm from dual; --获取会计年月区间月份

for kjny in ( /*SELECT TO_CHAR(ADD_MONTHS(TO_DATE(l_kjnyqs, 'yyyy-MM-dd'),

ROWNUM - 1), 'yyyy-MM-dd') DAY_ID FROM DUAL

CONNECT BY ROWNUM <=

months_between(to_date(l_kjnyzz, 'yyyy-MM-dd'), to_date(l_kjnyqs, 'yyyy-MM-dd')) + 1*/

select date '2015-09-01' day_id from dual) loop

select kjny.day_id into l_kjny from dual; select count(1) into v_yjbz

from t_kt_ktczxx xx

where xx.hsjg_dm = jgxx.hsjg_dm and xx.ktczzl = '03'

and xx.gs_rq = to_date(to_char(l_kjny - 1, 'yyyy-mm') || '-01', 'yyyy-MM-dd'); ---如果月结标志不为0,则进行核算机关报表加工 if v_yjbz != '0' then

p_gs_kt_zwyth_jg(l_hsjgdm, l_kjny, i_czrydm); end if; end loop; end if; end loop; --异常处理 exception

when others then rollback; declare

errmsg varchar2(32766); begin

errmsg := SQLERRM(SQLCODE); dbms_output.put_line(errmsg); end;

end p_gs_kt_zwyth_xqjg;


sql 工作典型案例(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:外资利用问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: