简绍pl/sql编程的
https://www.cnblogs.com/defias/p/3334098.html
declare V_FIRST NUMBER := 0; begin DBMS_OUTPUT.put_line('######执行初始化####'); for i in (select t.id,t.name from t_rpt_jys t ) loop V_FIRST := i.id ; DBMS_OUTPUT.put_line(V_FIRST); end loop; end;
复杂一点例子
DECLARE BEGIN_DATE VARCHAR2(32); V_FIRST NUMBER := 0; V_COUNT1 NUMBER := 0; V_COUNT NUMBER := 0; V_COUNT_SUB NUMBER := 0; V_PRE_DAY_NET_AMOUNT NUMBER := 0; V_MEMBER_ID COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.MEMBER_ID%TYPE; V_ACCOUNT_ID COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.ACCOUNT_ID%TYPE; V_BUSINESS_DATE COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.BUSINESS_DATE%TYPE; V_BALANCE COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.BALANCE%TYPE; -- 账户余额 V_ACCRUAL COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.ACCRUAL%TYPE; -- 发生额 V_CHANNEL_FEE COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.SETTLE_CHANNEL_FEE%TYPE; -- 结算渠道费 V_NET_AMOUNT COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT.NET_AMOUNT%TYPE; -- 净额 BEGIN DBMS_OUTPUT.put_line('######初始化日报表信息开始,请务必等待执行结束####'); for I in (SELECT A.MEMBER_ID, M.MEMBER_NAME, A.ACCOUNT_ID, A.CREATE_TIME, A.ACCOUNT_TYPE FROM MEMBER.TR_MEMBER_ACCOUNT A, MEMBER.TM_MEMBER M WHERE A.MEMBER_ID = M.MEMBER_ID AND A.ACCOUNT_ID IS NOT NULL ORDER BY A.CREATE_TIME ASC) LOOP BEGIN_DATE := TO_CHAR(I.CREATE_TIME, 'YYYY-MM-DD'); WHILE BEGIN_DATE < TO_CHAR(SYSDATE, 'YYYY-MM-DD') LOOP -- 发生额 SELECT --T.ACCOUNT_NO, NVL(TT.SUM_TXN_AMT, '0.00') INTO V_ACCRUAL FROM DPM.T_DPM_OUTER_ACCOUNT T LEFT JOIN (SELECT TT1.ACCOUNT_NO, (SUM_TXN_AMT1 - SUM_TXN_AMT2) SUM_TXN_AMT FROM (SELECT T1.ACCOUNT_NO, SUM(T1.TXN_AMT) SUM_TXN_AMT1 FROM DPM.T_DPM_OUTER_ACCOUNT_DETAIL T1 WHERE T1.DIRECTION = '1' AND T1.TXN_TIME < TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') + 1 AND T1.TXN_TIME > TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') GROUP BY T1.ACCOUNT_NO) TT1 JOIN (SELECT T2.ACCOUNT_NO, SUM(T2.TXN_AMT) SUM_TXN_AMT2 FROM DPM.T_DPM_OUTER_ACCOUNT_DETAIL T2 WHERE T2.DIRECTION = '2' AND T2.TXN_TIME < TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') + 1 AND T2.TXN_TIME > TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') GROUP BY T2.ACCOUNT_NO) TT2 ON TT1.ACCOUNT_NO = TT2.ACCOUNT_NO) TT ON T.ACCOUNT_NO = TT.ACCOUNT_NO WHERE T.ACCOUNT_NO = I.ACCOUNT_ID; -- 结算渠道费 SELECT --TT1.ACCOUNT_NO, (NVL(TT1.SUB_AMT, '0.00') - NVL(TT2.SUB_AMT, '0.00')) INTO V_CHANNEL_FEE FROM (SELECT O1.ACCOUNT_NO, T2.SUB_AMT FROM DPM.T_DPM_OUTER_ACCOUNT O1 LEFT JOIN (SELECT UNIQUE T1.ACCOUNT_NO, T1.DIRECTION, SUM(T1.AMOUNT) OVER(PARTITION BY T1.ACCOUNT_NO, T1.DIRECTION) SUB_AMT FROM DPM.T_DPM_ACCOUNT_ENTRY T1 WHERE T1.DIRECTION = '1' AND t1.LAST_UPDATE_TIME < TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') + 1 AND t1.LAST_UPDATE_TIME > TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') AND T1.SYS_TRACE_NO LIKE 'FEE%') T2 ON O1.ACCOUNT_NO = T2.ACCOUNT_NO) TT1 LEFT JOIN (SELECT O1.ACCOUNT_NO, T2.SUB_AMT FROM DPM.T_DPM_OUTER_ACCOUNT O1 LEFT JOIN (SELECT UNIQUE T1.ACCOUNT_NO, T1.DIRECTION, SUM(T1.AMOUNT) OVER(PARTITION BY T1.ACCOUNT_NO, T1.DIRECTION) SUB_AMT FROM DPM.T_DPM_ACCOUNT_ENTRY T1 WHERE T1.DIRECTION = '2' AND t1.LAST_UPDATE_TIME < TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') + 1 AND t1.LAST_UPDATE_TIME > TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') AND T1.SYS_TRACE_NO LIKE 'FEE%') T2 ON O1.ACCOUNT_NO = T2.ACCOUNT_NO) TT2 ON TT1.ACCOUNT_NO = TT2.ACCOUNT_NO WHERE TT2.ACCOUNT_NO = I.ACCOUNT_ID; -- 账户余额 SELECT AFTER_AMT INTO V_BALANCE FROM MEMBER.TR_MEMBER_ACCOUNT A LEFT JOIN (select A.* from (select AD.*, row_number() over(partition by AD.ACCOUNT_NO order by AD.TXN_TIME desc) rw from DPM.T_DPM_OUTER_ACCOUNT_DETAIL AD WHERE AD.TXN_TIME < TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss') + 1) A where A.rw = 1) T ON A.ACCOUNT_ID = T.ACCOUNT_NO WHERE A.ACCOUNT_ID = I.ACCOUNT_ID; ----为空的情况-- IF V_BALANCE IS NULL THEN ---查询 SELECT COUNT(1) INTO V_COUNT FROM DPM.T_DPM_OUTER_ACCOUNT_DETAIL CO WHERE CO.ACCOUNT_NO = I.ACCOUNT_ID; IF V_COUNT = 0 THEN SELECT COUNT(1) INTO V_COUNT_SUB from dpm.t_dpm_outer_account_subset da where da.account_no = I.ACCOUNT_ID; IF V_COUNT_SUB = 0 THEN V_BALANCE := 0.00; ELSE select SUM(DA.BALANCE) INTO V_BALANCE from dpm.t_dpm_outer_account_subset da where da.account_no = I.ACCOUNT_ID; END IF; ELSE SELECT BEFORE_AMT INTO V_BALANCE FROM (SELECT DO.BEFORE_AMT FROM DPM.T_DPM_OUTER_ACCOUNT_DETAIL DO WHERE DO.ACCOUNT_NO = I.ACCOUNT_ID ORDER BY DO.TXN_TIME ASC) WHERE ROWNUM = 1; END IF; END IF; -- 净额 SELECT COUNT(1) INTO V_FIRST FROM COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT BAL WHERE BAL.ACCOUNT_ID = I.ACCOUNT_ID AND TO_CHAR(BAL.BUSINESS_DATE, 'YYYY-MM-DD') = TO_CHAR(TO_DATE(BEGIN_DATE, 'YYYY-MM-DD') - 1); IF V_FIRST = 0 THEN V_NET_AMOUNT := V_ACCRUAL - V_CHANNEL_FEE; ELSE SELECT NVL(NET_AMOUNT, 0) INTO V_PRE_DAY_NET_AMOUNT FROM COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT BAL WHERE TO_CHAR(BAL.BUSINESS_DATE, 'YYYY-MM-DD') = TO_CHAR(TO_DATE(BEGIN_DATE, 'YYYY-MM-DD') - 1); V_NET_AMOUNT := V_ACCRUAL - V_CHANNEL_FEE + V_PRE_DAY_NET_AMOUNT; END IF; SELECT COUNT(1) INTO V_COUNT FROM COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT BAL WHERE BAL.ACCOUNT_ID = I.ACCOUNT_ID AND TO_CHAR(BAL.BUSINESS_DATE, 'YYYY-MM-DD') = BEGIN_DATE; IF V_COUNT = 0 THEN INSERT INTO COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT (ID, MEMBER_ID, MEMBER_NAME, ACCOUNT_ID, ACCOUNT_TYPE, BUSINESS_DATE, ACCRUAL, SETTLE_CHANNEL_FEE, BALANCE, NET_AMOUNT, CREATE_DATE) VALUES (COUNTER.SEQ_TB_MARKET_DAY_REPORT.NEXTVAL, I.MEMBER_ID, I.MEMBER_NAME, I.ACCOUNT_ID, I.ACCOUNT_TYPE TO_DATE(BEGIN_DATE || ' 05:00:00', 'yyyy-mm-dd hh24:mi:ss'), V_ACCRUAL, V_CHANNEL_FEE, V_BALANCE, V_NET_AMOUNT, SYSDATE); ELSE UPDATE COUNTER.TB_MARKET_ACCOUNT_DAY_REPORT BAL SET BAL.ACCRUAL = V_ACCRUAL, BAL.SETTLE_CHANNEL_FEE = V_CHANNEL_FEE, BAL.BALANCE = V_BALANCE WHERE BAL.ACCOUNT_ID = I.ACCOUNT_ID AND TO_CHAR(BAL.BUSINESS_DATE, 'YYYY-MM-DD') = BEGIN_DATE; END IF; BEGIN_DATE := TO_CHAR(TO_DATE(BEGIN_DATE, 'YYYY-MM-DD') + 1, 'YYYY-MM-DD'); COMMIT; END LOOP; END LOOP; DBMS_OUTPUT.put_line('######初始化日报表信息结束######'); END;
相关推荐
详细 简明的Winsock编程简绍 tcp/udp的简建立、连接于释放详解
strcpy的详细简绍 关于strcpy的处理方式的简绍和一些相关的习题,以及其简答
JAVA EL 表达式的简单简绍
Fx3g编程手册,主要简绍三菱PLC系列中的FX3G的编程方法,里面包含简单实例供参考学习
机修钳工视频机修钳工简绍,可作为学习教学使用。
abap编程 sap对象 ppt 简绍了sap对象编程
AM/FM的全部简绍很详细,有电路图和波形
桥规主要修订内容简绍.pdf
修辞手法简绍修辞18种.ppt
电信宽带业务机房设备硬件设备简绍和工作原理
STC89c51单片机的看门狗简绍,且有实例说明,可快速掌握看门狗
简绍oracle的内置函数,方便查看
tcl脚本基础 简绍tcl的基本用法 以及提出来的编程方法
虚拟店必备工具,淘宝专用
船舶吊车的简绍,维护,以及常见故障排查与修理
Spring Boot 项目搭建与Redis结合与应用Spring Boot 简介微服务是一种架构风格,是一种使用一套微小服务来开发单个应用的方式途径,每个服务
ls-dyna预应力加载简绍_相当详细.pdf
简绍一些有关嵌入式系统中常用的GUI,供开发人员参考选择。
自己找的资料,GIS的介绍和一个入门的PDF,希望有帮助
简绍了fanuc的PMC功能指令和机床编程器的用法