复杂报表存储 package body

/*

    下面代码中,使用了四种不同的代码风格和报表的实现方式,灵活运用即可 足够满足

一般乃至复杂的业务需求,还有一些工具函数和存储,可以参考使用,请耐心读代码,必有收获。

各有优缺点,可以组合各种风格一起使用,请自行参考

四种方式(ctrl+f搜索“四种方式”):

1、采用游标循环,循环内全部采用:select t.xx into xx from tt t where ...的代码风格

2、采用两条语句,一条insert tt select xx from ttt插入所需要的行,

然后一条update xx=(select yy from tt) where ...

3、采用子查询因子化,主要是使用with语句,可以实现不是很复杂的报表

4、采用model子句,实现强大的报表查询的功能(excel能实现的,这个东东一样能行,我这里面的自己可能很简单),结合with语句可以实现非常强大的报表。

*/

CREATE OR REPLACE PACKAGE BODY HIGTEST."HIG_REPORT_BORROW"
AS
   --FN_DKLL 用
   p_const_dkdh   VARCHAR2 (60) := NULL;

   --FN_DKLL 用
   TYPE dkll_rec_typ IS RECORD
   (
      dkll   NUMBER,
      num    NUMBER
   );

   --FN_DKLL 用
   TYPE dkll_tab_typ IS TABLE OF dkll_rec_typ
      INDEX BY PLS_INTEGER;

   --FN_DKLL 用
   dkll_tab       dkll_tab_typ;

   /*
   FN_DKLL测试方法(直接运行即可):
   SELECT
    HIG_REPORT_BORROW.FN_DKLL('DK00000137',TO_DATE('2013-04-09','YYYY-MM-DD'),1) AS ONE  ,
    HIG_REPORT_BORROW.FN_DKLL('DK00000137',TO_DATE('2013-04-09','YYYY-MM-DD'),2) AS TWO  ,
    HIG_REPORT_BORROW.FN_DKLL('DK00000137',TO_DATE('2013-04-09','YYYY-MM-DD'),3) AS THREE,
    HIG_REPORT_BORROW.FN_DKLL('DK00000145',TO_DATE('2013-04-09','YYYY-MM-DD'),1) AS ONE  ,
    HIG_REPORT_BORROW.FN_DKLL('DK00000145',TO_DATE('2013-04-09','YYYY-MM-DD'),2) AS TWO  ,
    HIG_REPORT_BORROW.FN_DKLL('DK00000145',TO_DATE('2013-04-09','YYYY-MM-DD'),3) AS THREE
   FROM
    DUAL;
   SELECT
   T.IYFRATE
   FROM
   T_HIG_BORROW_DK T
   WHERE
   T.CDOCUMENT ='DK00000138';
   取n次利率变化
   用法:
   FN_DKLL('DK00000145',TO_DATE('2013-03-29','YYYY-MM-DD'),1) AS DKLL1,
   每个不同的贷款单都要要调用此方法三次,所以这个函数要尽可能做优化。
   说明:
   此方法较下面的方法2,要更加优化,执行效率高,在理论上,细微区别请看代码并且结合实际运行情景。
   */
   FUNCTION fn_dkll (v_dkdh VARCHAR2,                                                                             --贷款单号
                                     v_date DATE,                                                                 --截止日期
                                                 v_num NUMBER)                                                 --第几次利率变化
      RETURN NUMBER
   AS
      p_num_his   NUMBER;
   BEGIN
      --如果单号相同,下面的方法可以仅仅执行一次而节约资源,否则执行计算并且缓存数据
      IF (p_const_dkdh IS NULL OR p_const_dkdh != v_dkdh)
      THEN
         p_const_dkdh := v_dkdh;

         --###CREATE INDEX HIGTEST.IDX$$_3E540001 ON HIGTEST.T_HIG_BORROW_JX('
         -- CDKDOCUMENT','CSTATUS','DJXENDDATE');
         SELECT *
           BULK COLLECT INTO dkll_tab
           FROM (SELECT w.dkll AS dkll,                                                                           --贷款利率
                                        --  W.DJXENDDATE,
                                        ROWNUM AS num                                                               --编号
                   FROM (  SELECT ROUND (t.iyfrate, 2) AS dkll,                                                   --贷款利率
                                  --      T.DJXENDDATE,
                                  CASE WHEN (LAG (t.iyfrate, 1, 0) OVER (ORDER BY t.djxenddate) <> t.iyfrate          --
                                                                                                            -- OR ROWNUM =1--第一行也算上
                                            )                     --                                    AND T.IYFRATE <>
                                              --                                                    (
                                              --
                                              -- SELECT
                                              --
                                              -- ROUND(T.IYFRATE,2)
                                              --                                                      FROM
                                              --
                                              -- T_HIG_BORROW_DK T
                                              --                                                      WHERE
                                              --
                                              -- T.CDOCUMENT =V_DKDH
                                              --                                                    ) --
                                              -- 排除与初始利率值相同的利率变化
                                  THEN 1 ELSE 2 END AS shuliang
                             FROM t_hig_borrow_jx t
                            WHERE t.cstatus = 'Y' AND t.cdkdocument = v_dkdh AND t.djxenddate <= v_date   --截止日期(贷款开始日期)
                         ORDER BY t.djxenddate                                                               --计息起始日期 正序
                                              ) w
                  WHERE w.shuliang = 1);
      END IF;

      IF v_num = 1
      THEN
         -- 如果有与默认利率相同的,则这些变化为相同的利率给初始化为null
         SELECT ROUND (t.iyfrate, 2)
           INTO p_num_his
           FROM t_hig_borrow_dk t
          WHERE t.cdocument = v_dkdh;

         IF dkll_tab (v_num).dkll = p_num_his
         THEN
            dkll_tab (v_num).dkll := dkll_tab (v_num + 1).dkll;
            dkll_tab (v_num + 1).dkll := dkll_tab (v_num + 2).dkll;
            dkll_tab (v_num + 2).dkll := NULL;
         END IF;
      END IF;

      RETURN dkll_tab (v_num).dkll;                                                                        --直接返回缓存中的数据。
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN NULL;
   END fn_dkll;

   /*
   取n次利率变化
   用法:
   FN_DKLL('DK00000145',TO_DATE('2013-03-29','YYYY-MM-DD'),1) AS DKLL1,
   每个不同的贷款单都要要调用此方法三次,这个函数是未优化过的,当大数据量时,请谨慎使用。
   说明:
   此方法没有废弃,此方法已经测试通过,可以使用
   */
   FUNCTION fn_dkll2 (v_dkdh VARCHAR2,                                                                            --贷款单号
                                      v_date DATE,                                                                --截止日期
                                                  v_num NUMBER)                                                --第几次利率变化
      RETURN NUMBER
   AS
      p_num       NUMBER (18, 4) := NULL;
      p_num_his   NUMBER;
   BEGIN
      SELECT dkll
        INTO p_num
        FROM (SELECT w.dkll AS dkll,                                                                              --贷款利率
                                     --  W.DJXENDDATE,
                                     ROWNUM AS num                                                                  --编号
                FROM (  SELECT t.iyfrate AS dkll,                                                                 --贷款利率
                               --      T.DJXENDDATE,
                               CASE WHEN (LAG (t.iyfrate, 1, 0) OVER (ORDER BY t.djxenddate) <> t.iyfrate --                                 OR ROWNUM
                                                                                                         -- =1--第一行也算上
                                         )                                                            --AND T.IYFRATE <>
                                           --                (
                                           --                  SELECT
                                           --                    T.IYFRATE
                                           --                  FROM
                                           --                    T_HIG_BORROW_DK T
                                           --                  WHERE
                                           --                    T.CDOCUMENT =V_DKDH
                                           --                ) --排除与初始利率值相同的利率变化
                               THEN 1 ELSE 2 END AS shuliang
                          FROM t_hig_borrow_jx t
                         WHERE t.cstatus = y AND t.cdkdocument = v_dkdh AND t.djxenddate <= v_date        --截止日期(贷款开始日期)
                      ORDER BY t.djxenddate                                                                  --计息起始日期 正序
                                           ) w
               WHERE w.shuliang = 1)
       WHERE num = v_num;                                                                        --值为1表示变化了,null表示没有发生变化

      IF v_num = 1
      THEN
         -- 如果有与默认利率相同的,则这些变化为相同的利率给初始化为null
         SELECT ROUND (t.iyfrate, 2)
           INTO p_num_his
           FROM t_hig_borrow_dk t
          WHERE t.cdocument = v_dkdh;

         IF p_num = p_num_his
         THEN
            RETURN NULL;
         END IF;
      END IF;

      RETURN p_num;
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN NULL;
   END fn_dkll2;

   FUNCTION fn_mark_dyh (text VARCHAR2)
      RETURN VARCHAR2
   IS
      /*
         单引号定义
        */
      mark_dyh   CHAR := CHR (39);
   /******************************************************************************
        warp '
   ******************************************************************************/
   BEGIN
      RETURN mark_dyh || text || mark_dyh;
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         NULL;
      WHEN OTHERS
      THEN
         -- Consider logging the error and then re-raise
         RAISE;
   END fn_mark_dyh;


   /*
   格式化数字为指定格式的字符串,多用于页面展示数字用
   测试语句:
    SELECT hig_report_borrow.fn_fmt_number (237834.856) a,
       hig_report_borrow.fn_fmt_number (237834.856, 0) aa,
       hig_report_borrow.fn_fmt_number (0.0) b,
       hig_report_borrow.fn_fmt_number (0.0, 4) bb,
       hig_report_borrow.fn_fmt_number (-0.0) c,
       hig_report_borrow.fn_fmt_number (-0.0, 8) cc,
       hig_report_borrow.fn_fmt_number (0.1236, 3) d,
       hig_report_borrow.fn_fmt_number (-0.1236, 3) e,
       hig_report_borrow.fn_fmt_number (-237289.356, 2, 10000) f,
       hig_report_borrow.fn_fmt_number (237289.356, 2, 10000) g,
       hig_report_borrow.fn_fmt_number (2, 4, 10000) h,
       hig_report_borrow.fn_fmt_number (-2, 4, 10000) hh
  FROM DUAL;
   */
   FUNCTION fn_fmt_number (v_num NUMBER,                                                                     --需要要格式化的数字
                                        v_pot NUMBER DEFAULT 2,                              --小数位数,现最大支持6位小数,默认精度为2位小数.
                                                               v_unit NUMBER DEFAULT 1)    --单位,默认单位为原始V_NUM数据的单位,即保持不变.
      RETURN VARCHAR2
   AS
      p_num    VARCHAR2 (100);
      p_unit   NUMBER;
      p_temp   NUMBER := 6;
   BEGIN
      p_unit := v_unit;

      IF v_unit IS NULL OR v_unit <= 0
      THEN                                                                               --兼容之前的数字格式化函数(因为现代码里有的传入的参数是0)
         p_unit := 1;
      END IF;

      --标准千分位显示
      p_num := TO_CHAR (ROUND (NVL (v_num, 0) / p_unit, v_pot), 'FM9,999,999,999,999,999,990.000000');

      /*
      请将下面的 if和return语句替换wie此语句,并将上面的fmt字符替换为:FM9,999,999,999,999,999,990.099999,
      测试,查看效果,RETURN p_num;*/
      IF v_pot <= 0
      THEN
         p_temp := p_temp + 1;
      END IF;

      RETURN SUBSTR (NVL (p_num, '0'), 1, LENGTH (p_num) - (p_temp - v_pot));
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN '0';
   END fn_fmt_number;

   /*
   格式化数字为百分比。
   测试语句:
    SELECT hig_report_borrow.fn_fmt_percent (237834.856) a,
       hig_report_borrow.fn_fmt_percent (237834.856, 0) aa,
       hig_report_borrow.fn_fmt_percent (0.0) b,
       hig_report_borrow.fn_fmt_percent (0.0, 4) bb,
       hig_report_borrow.fn_fmt_percent (-0.0) c,
       hig_report_borrow.fn_fmt_percent (-0.0, 8) cc,
       hig_report_borrow.fn_fmt_percent (236, 3) d,
       hig_report_borrow.fn_fmt_percent (-0.1236, 3) e,
       hig_report_borrow.fn_fmt_percent (-237289.356, 2) f,
       hig_report_borrow.fn_fmt_percent (237289.356, 2) g,
       hig_report_borrow.fn_fmt_percent (2, 4) h,
       hig_report_borrow.fn_fmt_percent (-2, 4) hh
  FROM DUAL;
   */
   FUNCTION fn_fmt_percent (v_num IN NUMBER, v_pot IN NUMBER DEFAULT 2)
      RETURN VARCHAR2
   AS
      p_num    VARCHAR2 (100);
      p_pot    NUMBER;
      p_temp   NUMBER := 6;
   BEGIN
      p_num := TO_CHAR (ROUND (NVL (v_num, 0) / 100, v_pot), 'FM9,999,999,999,999,999,990.000000');

      /*
      请将下面的 if和return语句替换wie此语句,并将上面的fmt字符替换为:FM9,999,999,999,999,999,990.099999,
      测试,查看效果,RETURN p_num || '%';*/
      IF v_pot <= 0
      THEN
         p_temp := p_temp + 1;
      END IF;

      RETURN SUBSTR (NVL (p_num, '0'), 1, LENGTH (p_num) - (p_temp - v_pot)) || '%';
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN '0.00%';
   END fn_fmt_percent;

   /*
   截止到当前日  累计
   FN_DATE_JZDDQR 截止到当前日 JD
   FN_DATE_BENNIAN 本年 Y
   FN_DATE_BENYUE 本月 M
   FN_DATE_JZDDQY 截止到当前月 JM
   目的:方便日后统一修改,省的像我一样这么累啊
   */
   FUNCTION fn_date (flag VARCHAR,                                                                        --标志如jd,y,m,jm
                                  d1 DATE,                                                                  --数据库表中的日期字段
                                          d2 DATE)                                                         --您填写的 要比较的日期
      RETURN NUMBER
   AS
      p_bool   BOOLEAN := FALSE;
      p_d1     DATE;
      p_d2     DATE;
      p_flag   VARCHAR (2);
   BEGIN
      -- 因为数据库中的日期的存储千奇百怪,所以这里要进行格式化处理
      p_d1 := TO_DATE (TO_CHAR (d1, 'YYYY-MM-DD'), 'YYYY-MM-DD');
      p_d2 := TO_DATE (TO_CHAR (d2, 'YYYY-MM-DD'), 'YYYY-MM-DD');
      p_flag := UPPER (flag);

      IF 'JD' = p_flag
      THEN                                                                                                --截止到当前日,包括当前日
         p_bool := p_d1 <= p_d2;
      ELSIF 'Y' = p_flag
      THEN                                                                                                  --本年初 到 截止日期
         p_bool := EXTRACT (YEAR FROM p_d1) = EXTRACT (YEAR FROM p_d2) AND p_d1 <= p_d2;
      ELSIF 'M' = p_flag
      THEN                                                                                                 --本年本月 到 截止日期
         p_bool :=
                EXTRACT (YEAR FROM p_d1) = EXTRACT (YEAR FROM p_d2)
            AND EXTRACT (MONTH FROM p_d1) = EXTRACT (MONTH FROM p_d2)
            AND p_d1 <= p_d2;
      ELSIF 'BY' = p_flag
      THEN                                                                                              --本年 预算相关的本年就是本年
         p_bool := EXTRACT (YEAR FROM p_d1) = EXTRACT (YEAR FROM p_d2);
      ELSIF 'BM' = p_flag
      THEN                                                                                              --本年 预算相关的本月就是本月
         p_bool :=
                EXTRACT (YEAR FROM p_d1) = EXTRACT (YEAR FROM p_d2)
            AND EXTRACT (MONTH FROM p_d1) = EXTRACT (MONTH FROM p_d2);
      ELSIF 'JM' = p_flag
      THEN                                                                                                 --截止到本月,包括当前月
         p_bool := p_d1 <= p_d2;                                                                                  --修改日期
      --        P_BOOL      := P_D1<FN_DATE_JZDDQY(P_D2);
      ELSE
         DBMS_OUTPUT.put_line ('没有找到 要处理的日期 逻辑,ERROR!!!');
      END IF;

      IF p_bool
      THEN
         RETURN 1;
      ELSE
         RETURN 0;
      END IF;
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN 0;
   END fn_date;

   /*
   截止到当前月 之累计
   目的:方便日后统一修改,省的像我一样这么累啊
   用法:SELECT  FN_JIEZHI_YUE(TO_DATE('2013-11-30','YYYY-MM-DD')) from dual;
   */
   FUNCTION fn_date_jzddqy (d DATE)
      RETURN DATE
   /*
   截止到当前月,包括当前月
   使用方法,dk.xxxdate < FN_JIEZHI_YUE(date); date是查询条件
   尹斌
   */
   AS
      y    NUMBER (4);
      m    NUMBER (4);
      dd   DATE;
   BEGIN
      y := EXTRACT (YEAR FROM d);
      m := EXTRACT (MONTH FROM d) + 1;

      IF m > 12
      THEN
         y := y + 1;
         m := 1;
      END IF;

      --  SYS.DBMS_OUTPUT.PUT_LINE(Y||'-'||M);
      dd := TO_DATE (y || '-' || m, 'YYYY-MM');
      RETURN dd;
   EXCEPTION
      WHEN OTHERS
      THEN
         RAISE;
   END fn_date_jzddqy;

   /*
   存储commit后,记录成功日志
   此方法不会自动给你commit;
   */
   PROCEDURE log_success (cuser          IN VARCHAR2,
                          csource        IN VARCHAR2,
                          caction        IN VARCHAR2,
                          cdescription   IN VARCHAR2)
   AS
   BEGIN
      INSERT INTO t_int_log (cuser,
                             csource,
                             caction,
                             cdescription)
           VALUES (cuser,
                   csource,
                   caction,
                   cdescription);
   EXCEPTION
      WHEN OTHERS
      THEN
         NULL;
   END log_success;

   /*
   存储发生exception后,记录异常日志。
   此方法不会自动给你rollback;
   */
   PROCEDURE log_error (cuser      IN VARCHAR2,
                        csource    IN VARCHAR2,
                        csqlcode   IN VARCHAR2,
                        csqlerrm   IN VARCHAR2)
   AS
      v_errorcode   VARCHAR2 (100);
      --      v_errorcode   t_int_log.caction%TYPE;                                                           --异常日志表  异常编码字段的类型
      v_errordesc   VARCHAR2 (2000);
   --      v_errordesc   t_int_log.cdescription%TYPE;                                                      --异常日志表  异常说明字段的类型
   BEGIN
      v_errorcode := SUBSTR (csqlcode, 1, 50);
      v_errordesc := SUBSTR (csqlerrm, 1, 1500);

      INSERT INTO t_int_log (cuser,
                             csource,
                             caction,
                             cdescription)
           VALUES (cuser,
                   csource,
                   v_errorcode || '#',
                   v_errordesc);

      --打印错误日志到控制台
      DBMS_OUTPUT.put_line (cuser || csource || v_errorcode || '#' || v_errordesc);
   END log_error;

   /*
   统计工具函数
   强烈依赖于T_HIG_SZPROJECT表和表中的数据,请务必注意。
   使用方式,请搜索此方法名,在这个文档中。
   */
   PROCEDURE util_hejiproject (sql_txt IN VARCHAR2,                                                              --模板sql
                                                   v_date DATE,                   --sql引擎在解析sql模板时会用此值”替换“sql模板中时间有关的占位符
                                                               v_parent_code IN VARCHAR2 DEFAULT 'PARENT'         --原理同上
                                                                                                         )
   AS
      --字符串操作优化
      sqlt   CONSTANT VARCHAR2 (3000)
         := REPLACE (sql_txt, 'HEJI_CHILLDRENS', 'SELECT T.CYHCODE FROM T_HIG_SZPROJECT T WHERE T.PARENT_CODE =:1') ;
      num             NUMBER;                                                                      --存储计算某个项目下的子项目的子项目数量
      temp            VARCHAR2 (100);                                                                --存储临时的 parent_code

      --游标:根据父级项目查询子项目编码
      CURSOR cur_his (cv_parent_code VARCHAR2)
      IS
         --###CREATE INDEX HIGTEST.IDX$$_3E5A0001 ON HIGTEST.T_HIG_SZPROJECT('
         -- PARENT_CODE');
         SELECT t.cyhcode
           FROM t_hig_szproject t
          WHERE t.parent_code = cv_parent_code;

   BEGIN
      SELECT COUNT (*)
        INTO num
        FROM t_hig_szproject t
       WHERE t.parent_code IN (SELECT i.cyhcode
                                 FROM t_hig_szproject i
                                WHERE i.parent_code = v_parent_code);

      IF num > 0
      THEN
         OPEN cur_his (v_parent_code);

         LOOP
            FETCH cur_his INTO temp;

            EXIT WHEN cur_his%NOTFOUND;
            util_hejiproject (sql_txt, v_date, temp);                                                             --递归迭代
         END LOOP;

         CLOSE cur_his;
      END IF;

      --
      --
      -- 递归内层项目一旦执行完毕,立即执行外层统计,由内到外逐层执行统计sql(业务上是由子项目到父项目再到祖父项目......),从而保证所有统计都是正确的。
      EXECUTE IMMEDIATE sqlt
         USING v_parent_code,
               v_date,
               v_parent_code,
               v_date;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         DBMS_OUTPUT.put_line ('DIGUI ERROR!' || SQLCODE || ':' || SQLERRM);
         ROLLBACK;
         RAISE;
   END;

   ---
   /*
   *******************************************************************************
   *******************************************************
   *******************************************************************************
   *****************************************1、融资明细台账
   *******************************************************************************
   *******************************************************
   */
   --
   -----------------------------------------------------------------------------
   -- 1、全项目融资台账
   PROCEDURE rztz_all (vv_date IN DATE)                                                                           --截止日期
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理数据先
      DELETE FROM t_hig_borrow_qxmzjdktz_his t
            WHERE t.cdate = v_date;

      --执行存储
      p_hig_borrow_qxmzjdktz (v_date);
      --合计
      util_hejiproject ('UPDATE  
T_HIG_BORROW_QXMZJDKTZ_HIS T
SET  
(    
DKYS,    
NCYE,    
BNYSJK,    
BNYSHK,    
BNSJJK,    
BNSJHK,    
BNCJK,    
BNCHK,    
BYYSJK,    
BYYSHK,    
BYSJJK,    
BYSJHK,    
BYCJK,    
BYCHK,    
QMYE,    
GDNCYE,    
GDBNYSJK,    
GDBNYSHK,    
GDBNSJJK,    
GDBNSJHK,    
GDBNCJK,    
GDBNCHK,    
GDBYYSJK,    
GDBYYSHK,    
GDBYSJJK,    
GDBYSJHK,    
GDBYCJK,    
GDBYCHK,    
GDQMYE,    
KFNCYE,    
KFBNYSJK,    
KFBNYSHK,    
KFBNSJJK,    
KFBNSJHK,    
KFBNCJK,    
KFBNCHK,    
KFBYYSJK,    
KFBYYSHK,    
KFBYSJJK,    
KFBYSJHK,    
KFBYCJK,    
KFBYCHK,    
KFQMYE,    
NBNCYE,    
NBBNLJJK,    
NBBNJHK,    
NBBYSJJK,    
NBBYSJHK,    
NBQMYE,    
ZCZJ  
)  
=  
(    
SELECT      
SUM(DKYS),    --      
SUM(NCYE),    --      
SUM(BNYSJK),  --      
SUM(BNYSHK),  --      
SUM(BNSJJK),  --      
SUM(BNSJHK),  --      
SUM(BNCJK),   --      
SUM(BNCHK),   --      
SUM(BYYSJK),  --      
SUM(BYYSHK),  --      
SUM(BYSJJK),  --      
SUM(BYSJHK),  --      
SUM(BYCJK),   --      
SUM(BYCHK),   --      
SUM(QMYE),    --      
SUM(GDNCYE),  --      
SUM(GDBNYSJK),--      
SUM(GDBNYSHK),--      
SUM(GDBNSJJK),--      
SUM(GDBNSJHK),--      
SUM(GDBNCJK), --      
SUM(GDBNCHK), --      
SUM(GDBYYSJK),--      
SUM(GDBYYSHK),--      
SUM(GDBYSJJK),--      
SUM(GDBYSJHK),--      
SUM(GDBYCJK), --      
SUM(GDBYCHK), --      
SUM(GDQMYE),  --      
SUM(KFNCYE),  --      
SUM(KFBNYSJK),--      
SUM(KFBNYSHK),--      
SUM(KFBNSJJK),--      
SUM(KFBNSJHK),--      
SUM(KFBNCJK), --      
SUM(KFBNCHK), --      
SUM(KFBYYSJK),--      
SUM(KFBYYSHK),--      
SUM(KFBYSJJK),--      
SUM(KFBYSJHK),--      
SUM(KFBYCJK), --      
SUM(KFBYCHK), --      
SUM(KFQMYE),  --      
SUM(NBNCYE),  --      
SUM(NBBNLJJK),--      
SUM(NBBNJHK), --      
SUM(NBBYSJJK),--      
SUM(NBBYSJHK),--      
SUM(NBQMYE),  --      
SUM(ZCZJ)     --    
FROM      
T_HIG_BORROW_QXMZJDKTZ_HIS S    
WHERE      
S.CPROJECTCODE IN(HEJI_CHILLDRENS)    
AND S.CDATE      = :2  
)
WHERE  
T.CPROJECTCODE   = :3
AND T.CDATE      = :4
AND T.CSTATUS    = ' || fn_mark_dyh ('N'), v_date);

      --格式化
      DELETE FROM t_hig_borrow_qxmzjdktz t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_qxmzjdktz t (t.cprojectcode,
                                            t.jytz,
                                            t.dkys,
                                            t.ncye,
                                            t.bnysjk,
                                            t.bnyshk,
                                            t.bnsjjk,
                                            t.bnsjhk,
                                            t.bncjk,
                                            t.bnchk,
                                            t.byysjk,
                                            t.byyshk,
                                            t.bysjjk,
                                            t.bysjhk,
                                            t.bycjk,
                                            t.bychk,
                                            t.qmye,
                                            t.gdncye,
                                            t.gdbnysjk,
                                            t.gdbnyshk,
                                            t.gdbnsjjk,
                                            t.gdbnsjhk,
                                            t.gdbncjk,
                                            t.gdbnchk,
                                            t.gdbyysjk,
                                            t.gdbyyshk,
                                            t.gdbysjjk,
                                            t.gdbysjhk,
                                            t.gdbycjk,
                                            t.gdbychk,
                                            t.gdqmye,
                                            t.kfncye,
                                            t.kfbnysjk,
                                            t.kfbnyshk,
                                            t.kfbnsjjk,
                                            t.kfbnsjhk,
                                            t.kfbncjk,
                                            t.kfbnchk,
                                            t.kfbyysjk,
                                            t.kfbyyshk,
                                            t.kfbysjjk,
                                            t.kfbysjhk,
                                            t.kfbycjk,
                                            t.kfbychk,
                                            t.kfqmye,
                                            t.nbncye,
                                            t.nbbnljjk,
                                            t.nbbnjhk,
                                            t.nbbysjjk,
                                            t.nbbysjhk,
                                            t.nbqmye,
                                            t.zczj,
                                            t.cdate,
                                            t.cprojectname,
                                            t.cprojectnamefmt,
                                            t.iorder,
                                            t.cstatus)
         SELECT cprojectcode,
                jytz,
                fn_fmt_number (dkys, 0, 10000),
                fn_fmt_number (ncye, 0, 10000),
                fn_fmt_number (bnysjk, 0, 10000),
                fn_fmt_number (bnyshk, 0, 10000),
                fn_fmt_number (bnsjjk, 0, 10000),
                fn_fmt_number (bnsjhk, 0, 10000),
                fn_fmt_number (bncjk, 0, 10000),
                fn_fmt_number (bnchk, 0, 10000),
                fn_fmt_number (byysjk, 0, 10000),
                fn_fmt_number (byyshk, 0, 10000),
                fn_fmt_number (bysjjk, 0, 10000),
                fn_fmt_number (bysjhk, 0, 10000),
                fn_fmt_number (bycjk, 0, 10000),
                fn_fmt_number (bychk, 0, 10000),
                fn_fmt_number (qmye, 0, 10000),
                fn_fmt_number (gdncye, 0, 10000),
                fn_fmt_number (gdbnysjk, 0, 10000),
                fn_fmt_number (gdbnyshk, 0, 10000),
                fn_fmt_number (gdbnsjjk, 0, 10000),
                fn_fmt_number (gdbnsjhk, 0, 10000),
                fn_fmt_number (gdbncjk, 0, 10000),
                fn_fmt_number (gdbnchk, 0, 10000),
                fn_fmt_number (gdbyysjk, 0, 10000),
                fn_fmt_number (gdbyyshk, 0, 10000),
                fn_fmt_number (gdbysjjk, 0, 10000),
                fn_fmt_number (gdbysjhk, 0, 10000),
                fn_fmt_number (gdbycjk, 0, 10000),
                fn_fmt_number (gdbychk, 0, 10000),
                fn_fmt_number (gdqmye, 0, 10000),
                fn_fmt_number (kfncye, 0, 10000),
                fn_fmt_number (kfbnysjk, 0, 10000),
                fn_fmt_number (kfbnyshk, 0, 10000),
                fn_fmt_number (kfbnsjjk, 0, 10000),
                fn_fmt_number (kfbnsjhk, 0, 10000),
                fn_fmt_number (kfbncjk, 0, 10000),
                fn_fmt_number (kfbnchk, 0, 10000),
                fn_fmt_number (kfbyysjk, 0, 10000),
                fn_fmt_number (kfbyyshk, 0, 10000),
                fn_fmt_number (kfbysjjk, 0, 10000),
                fn_fmt_number (kfbysjhk, 0, 10000),
                fn_fmt_number (kfbycjk, 0, 10000),
                fn_fmt_number (kfbychk, 0, 10000),
                fn_fmt_number (kfqmye, 0, 10000),
                fn_fmt_number (nbncye, 0, 10000),
                fn_fmt_number (nbbnljjk, 0, 10000),
                fn_fmt_number (nbbnjhk, 0, 10000),
                fn_fmt_number (nbbysjjk, 0, 10000),
                fn_fmt_number (nbbysjhk, 0, 10000),
                fn_fmt_number (nbqmye, 0, 10000),
                fn_fmt_number (zczj, 0, 10000),
                cdate,
                cprojectname,
                cprojectnamefmt,
                iorder,
                cstatus 
           FROM t_hig_borrow_qxmzjdktz_his
          WHERE cdate = v_date;

      COMMIT;
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_QXMZJDKTZ',
                   'HIG全项目资金贷款台账_汇总—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_QXMZJDKTZ',
                    SQLCODE,
                    SQLERRM);
   END rztz_all;

   --
   -----------------------------------------------------------------------------
   -- 2、单项目融资台账-到分期
   PROCEDURE rztz_fq (vv_date          IN DATE,                                                                   --截止日期
                      v_cprojectcode   IN VARCHAR2 DEFAULT NULL,                                                  --项目编码
                      v_cprojectname   IN VARCHAR2 DEFAULT NULL)                                                  --项目名称
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理数据先
      DELETE FROM t_hig_borrow_dxmzjdktz_fq_his t
            WHERE t.cdate = v_date;

      IF v_cprojectcode IS NULL AND v_cprojectname IS NULL
      THEN                                                                                               --循环计算每个项目 TODO
         FOR j IN (SELECT t.cyhcode, t.cyhname
                     FROM t_hig_szproject t
                    WHERE t.cstatus = y                                                             --仅仅查询合计 项目,非项目不进行计算
                                       )
         LOOP
            p_hig_borrow_dxmzjdktz_fq (j.cyhcode, j.cyhname, v_date);
         END LOOP;
      ELSE
         p_hig_borrow_dxmzjdktz_fq (v_cprojectcode, v_cprojectname, v_date);
      END IF;

      --格式化
      DELETE FROM t_hig_borrow_dxmzjdktz_fq t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_dxmzjdktz_fq t (fenqi,
                                               dkys,
                                               isxmoney,
                                               keyongedu,
                                               daikuanyue,
                                               idkmoney,
                                               ihkmoney,
                                               lxftszq,
                                               lxftszh,
                                               cdate,
                                               cprojectname,
                                               cprojectcode,
                                               iorder,
                                               fqcode)
         SELECT fenqi,
                fn_fmt_number (dkys, 0, 10000),
                fn_fmt_number (s.isxmoney, 0, 10000),
                fn_fmt_number (s.keyongedu, 0, 10000),
                fn_fmt_number (s.daikuanyue, 0, 10000),
                fn_fmt_number (s.idkmoney, 0, 10000),
                fn_fmt_number (s.ihkmoney, 0, 10000),
                fn_fmt_number (s.lxftszq, 0, 10000),
                fn_fmt_number (s.lxftszh, 0, 10000),
                cdate,
                cprojectname,
                cprojectcode,
                iorder,
                fqcode
           FROM t_hig_borrow_dxmzjdktz_fq_his s
          WHERE s.cdate = v_date;

      COMMIT;
      --记录日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMZJDKTZ_FQ',
                   'HIG单项目融资台账-到分期—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMZJDKTZ_FQ',
                    SQLCODE,
                    SQLERRM);
   END rztz_fq;

   --
   -----------------------------------------------------------------------------
   -- 3、单项目融资台账-到贷款单
   PROCEDURE rztz_dk (vv_date IN DATE)                                                                            --截止日期
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理数据先
      DELETE FROM t_hig_borrow_dxmzjdktz_dk_his t
            WHERE t.cdate = v_date;

      --执行存储
      p_hig_borrow_dxmzjdktz_dk (v_date);

      --格式化
      DELETE FROM t_hig_borrow_dxmzjdktz_dk t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_dxmzjdktz_dk t (cdocument,
                                               czjfroms,
                                               csxtypename,
                                               cskfname,
                                               cfdfname,
                                               idkmoney,
                                               ddkbegindate,
                                               ddkenddate,
                                               qixian,
                                               ihkmoney,
                                               inothkmoney,
                                               iactualrate,
                                               dklly1,
                                               dklly2,
                                               dklly3,
                                               lxftszq,
                                               lxftszh,
                                               cdate,
                                               cfqname,
                                               cprojectname,
                                               cprojectcode,
                                               cfqcode)
         SELECT s.cdocument,
                s.czjfroms,
                s.csxtypename,
                s.cskfname,
                s.cfdfname,
                fn_fmt_number (s.idkmoney, 0, 10000),
                s.ddkbegindate,
                s.ddkenddate,
                TO_CHAR (s.qixian),
                fn_fmt_number (s.ihkmoney, 0, 10000),
                fn_fmt_number (s.inothkmoney, 0, 10000),
                fn_fmt_percent (NVL (s.iactualrate, 0) * 100, 2),
                fn_fmt_percent (NVL (s.dklly1, 0) * 100, 2),
                fn_fmt_percent (NVL (s.dklly2, 0) * 100, 2),
                fn_fmt_percent (NVL (s.dklly3, 0) * 100, 2),
                fn_fmt_number (s.lxftszq, 0, 10000),
                fn_fmt_number (s.lxftszh, 0, 10000),
                --
                s.cdate,
                s.cfqname,
                s.cprojectname,
                s.cprojectcode,
                s.cfqcode
           FROM t_hig_borrow_dxmzjdktz_dk_his s
          WHERE s.cdate = v_date;

      COMMIT;
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMZJDKTZ_DK',
                   'HIG单项目融资台账-到贷款单—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMZJDKTZ_DK',
                    SQLCODE,
                    SQLERRM);
   END rztz_dk;

   --
   -----------------------------------------------------------------------------
   -- 4、单项目融资台账-到还款单   最新的存储
   PROCEDURE rztz_hk (vv_date IN DATE)                                                                            --截止日期
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理数据先
      DELETE FROM t_hig_borrow_dxmzjdktz_hk_his t
            WHERE t.cdate = v_date;

      --执行存储
      p_hig_borrow_dxmzjdktz_hk (v_date);

      --格式化
      DELETE FROM t_hig_borrow_dxmzjdktz_hk t
            WHERE t.cdate = v_date;

      --
      INSERT INTO t_hig_borrow_dxmzjdktz_hk t (cdocument,
                                               cbankcategoryname,
                                               caccount,
                                               ihkmoney,
                                               dhkdate,
                                               cdkdocument,
                                               cdate,
                                               cprojectname,
                                               cprojectcode)
         SELECT cdocument,
                cbankcategoryname,
                caccount,
                fn_fmt_number (ihkmoney, 0, 10000),                                                               --还款金额
                dhkdate,
                cdkdocument,
                cdate,
                cprojectname,
                cprojectcode
           FROM t_hig_borrow_dxmzjdktz_hk_his s
          WHERE s.cdate = v_date;

      COMMIT;
      --记录日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMZJDKTZ_HK',
                   'HIG单项目融资台账-到还款单—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMZJDKTZ_HK',
                    SQLCODE,
                    SQLERRM);
   END rztz_hk;

   /*
   *******************************************************************************
   *******************************************************
   *******************************************************************************
   *****************************************2、应转利息台账
   *******************************************************************************
   *******************************************************
   */
   --
   -----------------------------------------------------------------------------
   -- 1.全生命周期应转利息台账
   PROCEDURE yzlxtz_all (vv_date IN DATE)                                                                         --截止日期
   AS
      v_cdate   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      /*  清理数据先  */
      DELETE FROM t_hig_borrow_qxmyzlxtz_his t
            WHERE t.cdate = v_cdate;

      --执行存储
      p_hig_borrow_qxmyzlxtz (v_cdate);                                                                           --截止日期
      --合计
      /*
      下面的函数的测试脚本,请直接运行,如果没有返回任何数据表示下面的函数执行没有bug。
      SELECT
      CPROJECTNAME,
      ZBHLXZE,
      WJZZBHLX,
      YJZZBHLX,
      (WJZZBHLX+YJZZBHLX)
      FROM
      T_HIG_BORROW_QXMYZLXTZ_HIS T
      WHERE
      T.WQYZBHLX <> (T.ZBHLXZE-T.YQYZBHLX)
      OR T.WJZZBHLX <> (T.ZBHLXZE-T.YJZZBHLX);
      */
      util_hejiproject (
         '  UPDATE
T_HIG_BORROW_QXMYZLXTZ_HIS T
SET
(
IDKBUDGET,
--IRATE,
--ITIME,
ZBHLXZE,
DPMZICB,
IAREA,
IJZAREA,
YJZZBHLX,
WJZZBHLX,
IYJMONEY,
IQYAREA,
YQYZBHLX,
WQYZBHLX
)
=
(
SELECT
SUM(S.IDKBUDGET),                 --贷款预算
--AVG(S.IRATE),                     --利率
--AVG(S.ITIME),                     --周期
SUM(S.ZBHLXZE),                   --E2E资本化利息总额A
--CASE WHEN SUM(T.IAREA) = 0 THEN 0 ELSE SUM(T.ZBHLXZE) / SUM(T.IAREA) END,--单㎡资金成本①
SUM(S.DPMZICB),                   --单㎡资金成本①
SUM(S.IAREA),                     --总可售面积D
SUM(S.IJZAREA),                   --已结转面积②
--SUM(S.DPMZICB) * SUM(S.IJZAREA),       --已结转资本化利息=①*②
SUM(S.YJZZBHLX),                   --已结转资本化利息=①*②
--SUM(S.ZBHLXZE) - SUM(S.YJZZBHLX),      --未结转资本化利息
SUM(S.WJZZBHLX),                  --未结转资本化利息
SUM(S.IYJMONEY),                  --实际应计利C
SUM(S.IQYAREA),                   --已签约面积3
SUM(S.YQYZBHLX),                  --已签约资本化利息D=①*3
--SUM(S.ZBHLXZE) - SUM(S.YQYZBHLX)       --未签约资本化利息
SUM(S.WQYZBHLX)--未签约资本化利息
FROM
T_HIG_BORROW_QXMYZLXTZ_HIS S
WHERE
S.CPROJECTCODE IN(HEJI_CHILLDRENS)
AND S.CDATE      = :2
)
WHERE
T.CPROJECTCODE   = :3
AND T.CDATE      = :4
AND T.CSTATUS    = ''N'' ',
         v_cdate);

      --格式化
      DELETE FROM t_hig_borrow_qxmyzlxtz t
            WHERE t.cdate = v_cdate;

      /*
      涉及面积的(只要有面积两个词的),需要格式化到元,去除小数,以千分位格式化,例子:FN_FMT_NUMBER(S.DPMZICB, 0, 0)
      涉及到金额的,需要格式化到万,去除小数,以千分位格式化 FN_FMT_NUMBER(S.IYJMONEY, 0, 10000),
      */
      INSERT INTO t_hig_borrow_qxmyzlxtz t (t.cdate,
                                            t.cprojectcode,
                                            t.cprojectname,
                                            t.dpmzicb,
                                            t.iarea,
                                            t.idkbudget,
                                            t.ijzarea,
                                            t.iorder,
                                            t.irate,
                                            t.itime,
                                            t.iyjmoney,
                                            t.wjzzbhlx,
                                            t.yjzzbhlx,
                                            t.zbhlxze,
                                            t.cprojectnamefmt,
                                            t.iqyarea,
                                            t.yqyzbhlx,
                                            t.wqyzbhlx,
                                            t.cstatus)
         SELECT s.cdate,
                s.cprojectcode,
                s.cprojectname,
                fn_fmt_number (s.dpmzicb, 4, 10000),                                                 --单平米 资金成本 (格式化到万元)
                fn_fmt_number (s.iarea, 0, 0),                                                                   --总可售面积
                fn_fmt_number (s.idkbudget, 0, 10000),                                                            --贷款预算
                fn_fmt_number (s.ijzarea, 0, 0),                                                                --已结转面积②
                s.iorder,
                fn_fmt_percent (NVL (s.irate, 0) * 100, 1),                                                         --利率
                s.itime,
                fn_fmt_number (s.iyjmoney, 0, 10000),                                                        --4.实际应计利息C
                fn_fmt_number (s.wjzzbhlx, 0, 10000),                                                         --未结转资本化利息
                fn_fmt_number (s.yjzzbhlx, 0, 10000),                                                    --已结转资本化利息B=①*②
                fn_fmt_number (s.zbhlxze, 0, 10000),                                                       --E2E资本化利息总额A
                s.cprojectnamefmt,
                fn_fmt_number (s.iqyarea, 0, 0),                                                                --已签约面积3
                fn_fmt_number (s.yqyzbhlx, 0, 10000),                                                    --已签约资本化利息D=①*3
                fn_fmt_number (s.wqyzbhlx, 0, 10000),                                                         --未签约资本化利息
                s.cstatus                                                                                        --是否是项目
           FROM t_hig_borrow_qxmyzlxtz_his s
          WHERE s.cdate = v_cdate;

      COMMIT;
      /*记录日志*/
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_QXMYZLXTZ',
                   'HIG全生命周期应转利息台账—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_QXMYZLXTZ',
                    SQLCODE,
                    SQLERRM);
   END yzlxtz_all;

   --
   -----------------------------------------------------------------------------
   -- 3.单项目应转利息台账
   PROCEDURE yzlxtz_one (vv_date          IN DATE,                                                                --截止日期
                         v_cprojectcode   IN VARCHAR2 DEFAULT NULL,                                               --项目编码
                         v_cprojectname   IN VARCHAR2 DEFAULT NULL                                                --项目名称
                                                                  )
   AS
      v_cdate   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      /*
      清理数据先,将当天已经查询过的数据都清除
      T.CPROJECTCODE =V_CPROJECTCODE OR T.CPROJECTNAME = V_CPROJECTNAME --
      AND
      */
      DELETE FROM t_hig_borrow_dxmyzlxtz_his t
            WHERE t.cdate = v_cdate;

      --循环计算
      IF v_cprojectcode IS NULL AND v_cprojectname IS NULL
      THEN
         FOR j IN (SELECT t.cyhcode, t.cyhname
                     FROM t_hig_szproject t)
         LOOP
            p_hig_borrow_dxmyzlxtz (j.cyhcode, j.cyhname, v_cdate);
         END LOOP;
      ELSE
         p_hig_borrow_dxmyzlxtz (v_cprojectcode, v_cprojectname, v_cdate);
      END IF;

      /*  格式化 todo,直接将当前时间v——date,的数据统统格式化到,显示表中  */
      DELETE FROM t_hig_borrow_dxmyzlxtz t
            WHERE t.cdate = v_cdate;

      /*
      所有与面积有关的,都格式化为元,千分位格式显示,无小数
      所有与金额有关的,都格式化为万,千分位格式显示,无效书
      */
      INSERT INTO t_hig_borrow_dxmyzlxtz t (t.cdate,
                                            t.cinstallmentname,
                                            t.cprojectcode,
                                            t.cprojectname,
                                            t.dpmzicb,
                                            t.iarea,
                                            t.idkbudget,
                                            t.ijzarea,
                                            t.iorder,
                                            t.iqyarea,
                                            t.irate,
                                            t.itime,
                                            t.iyjmoney,
                                            t.wjzzbhlx,
                                            t.wqyzbhlx,
                                            t.yjzzbhlx,
                                            t.yqyzbhlx,
                                            t.zbhlxze)
         SELECT s.cdate,
                s.cinstallmentname,
                s.cprojectcode,
                s.cprojectname,
                fn_fmt_number (s.dpmzicb, 4, 10000),                                                            --单㎡资金成本
                fn_fmt_number (s.iarea, 0, 0),                                                                   --总可售面积
                fn_fmt_number (s.idkbudget, 0, 10000),                                                            --贷款预算
                fn_fmt_number (s.ijzarea, 0, 0),                                                                 --已结转面积
                s.iorder,
                fn_fmt_number (s.iqyarea, 0, 0),                                                                 --已签约面积
                fn_fmt_percent (NVL (s.irate, 0) * 100, 1),                                                         --利率
                fn_fmt_number (s.itime, 1),                                                                 --周期 格式化一位小数
                fn_fmt_number (s.iyjmoney, 0, 10000),                                                        --3.实际应计利息C
                fn_fmt_number (s.wjzzbhlx, 0, 10000),                                                         --未结转资本化利息
                fn_fmt_number (s.wqyzbhlx, 0, 10000),                                                         --未签约资本化利息
                fn_fmt_number (s.yjzzbhlx, 0, 10000),                                                    --已结转资本化利息B=①*②
                fn_fmt_number (s.yqyzbhlx, 0, 10000),                                                    --已签约资本化利息D=①*3
                fn_fmt_number (s.zbhlxze, 0, 10000)                                                        --E2E资本化利息总额A
           FROM t_hig_borrow_dxmyzlxtz_his s
          WHERE s.cdate = v_cdate;

      COMMIT;
      /*记录日志*/
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMYZLXTZ',
                   'HIG全生命周期应转利息台账—项目 | ',
                   '计算-成功');
      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMYZLXTZ',
                    SQLCODE,
                    SQLERRM);
   END yzlxtz_one;

   /*
   *******************************************************************************
   *******************************************************
   *******************************************************************************
   *****************************************3、应计利息台账
   *******************************************************************************
   *******************************************************
   */
   --
   -----------------------------------------------------------------------------
   -- 1.全项目应计利息台账
   PROCEDURE yjlxtz_all (vv_date IN DATE)                                                                         --截止日期
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      /*  清理数据先  */
      DELETE FROM t_hig_borrow_qxmyjlxtz_his t
            WHERE t.cdate = v_date;

      /*
      执行存储
      */
      p_hig_borrow_qxmyjlxtz (v_date);
      /*
      合计
      */
      util_hejiproject ('UPDATE
T_HIG_BORROW_QXMYJLXTZ_HIS T
SET
(
T.HJZJCBLXZDTYS,
T.HJLJYJLX,
T.HJBNYS,
T.HJBNSJ,
T.HJBNC,
T.HJBYYS,
T.HJBYSJ,
T.HJBYC,
T.CJBNLJ,
T.CJBYLJ,
T.GDYJLXYS,
T.GDLJYJLX,
T.GDBNYS,
T.GDBNSJ,
T.GDBNC,
T.GDBYYS,
T.GDBYSJ,
T.GDBYC,
T.KFYJLXYS,
T.KFLJYJLX,
T.KFBNYS,
T.KFBNSJ,
T.KFBNC,
T.KFBYYS,
T.KFBYSJ,
T.KFBYC
)
=
(
SELECT
SUM(S.HJZJCBLXZDTYS),
SUM(S.HJLJYJLX),
SUM(S.HJBNYS),
SUM(S.HJBNSJ),
SUM(S.HJBNC),
SUM(S.HJBYYS),
SUM(S.HJBYSJ),
SUM(S.HJBYC),
SUM(S.CJBNLJ),
SUM(S.CJBYLJ),
SUM(S.GDYJLXYS),
SUM(S.GDLJYJLX),
SUM(S.GDBNYS),
SUM(S.GDBNSJ),
SUM(S.GDBNC),
SUM(S.GDBYYS),
SUM(S.GDBYSJ),
SUM(S.GDBYC),
SUM(S.KFYJLXYS),
SUM(S.KFLJYJLX),
SUM(S.KFBNYS),
SUM(S.KFBNSJ),
SUM(S.KFBNC),
SUM(S.KFBYYS),
SUM(S.KFBYSJ),
SUM(S.KFBYC)
FROM
T_HIG_BORROW_QXMYJLXTZ_HIS S
WHERE
S.CPROJECTCODE IN(HEJI_CHILLDRENS)
AND T.CDATE    = :2
)
WHERE
T.CPROJECTCODE = :3
AND T.CDATE    = :4
AND T.CSTATUS    = ''N'' ', v_date);

      /*  格式化  */
      DELETE FROM t_hig_borrow_qxmyjlxtz t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_qxmyjlxtz t (t.cdate,
                                            t.cjbnlj,
                                            t.cjbylj,
                                            t.cprojectcode,
                                            t.cprojectname,
                                            t.gdbnc,
                                            t.gdbnsj,
                                            t.gdbnys,
                                            t.gdbyc,
                                            t.gdbysj,
                                            t.gdbyys,
                                            t.gdljyjlx,
                                            t.gdyjlxys,
                                            t.hjbnc,
                                            t.hjbnsj,
                                            t.hjbnys,
                                            t.hjbyc,
                                            t.hjbysj,
                                            t.hjbyys,
                                            t.hjljyjlx,
                                            t.hjzjcblxzdtys,
                                            t.iorder,
                                            t.jytz,
                                            t.kfbnc,
                                            t.kfbnsj,
                                            t.kfbnys,
                                            t.kfbyc,
                                            t.kfbysj,
                                            t.kfbyys,
                                            t.kfljyjlx,
                                            t.kfyjlxys,
                                            t.cprojectnamefmt,
                                            t.cstatus)
         SELECT s.cdate,
                fn_fmt_number (s.cjbnlj, 0, 10000),                                                      --本年累计 内部资金拆借利息
                fn_fmt_number (s.cjbylj, 0, 10000),                                                      --本月累计 内部资金拆借利息
                s.cprojectcode,
                s.cprojectname,
                fn_fmt_number (s.gdbnc, 0, 10000),
                fn_fmt_number (s.gdbnsj, 0, 10000),
                fn_fmt_number (s.gdbnys, 0, 10000),
                fn_fmt_number (s.gdbyc, 0, 10000),
                fn_fmt_number (s.gdbysj, 0, 10000),
                fn_fmt_number (s.gdbyys, 0, 10000),
                fn_fmt_number (s.gdljyjlx, 0, 10000),
                fn_fmt_number (s.gdyjlxys, 0, 10000),
                fn_fmt_number (s.hjbnc, 0, 10000),
                fn_fmt_number (s.hjbnsj, 0, 10000),
                fn_fmt_number (s.hjbnys, 0, 10000),
                fn_fmt_number (s.hjbyc, 0, 10000),
                fn_fmt_number (s.hjbysj, 0, 10000),
                fn_fmt_number (s.hjbyys, 0, 10000),
                fn_fmt_number (s.hjljyjlx, 0, 10000),
                fn_fmt_number (s.hjzjcblxzdtys, 0, 10000),
                s.iorder,
                s.jytz,
                fn_fmt_number (s.kfbnc, 0, 10000),
                fn_fmt_number (s.kfbnsj, 0, 10000),
                fn_fmt_number (s.kfbnys, 0, 10000),
                fn_fmt_number (s.kfbyc, 0, 10000),
                fn_fmt_number (s.kfbysj, 0, 10000),
                fn_fmt_number (s.kfbyys, 0, 10000),
                fn_fmt_number (s.kfljyjlx, 0, 10000),
                fn_fmt_number (s.kfyjlxys, 0, 10000),
                s.cprojectnamefmt,
                cstatus
           FROM t_hig_borrow_qxmyjlxtz_his s
          WHERE s.cdate = v_date;

      COMMIT;
      --记录日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_QXMYJLXTZ',
                   'HIG全项目应计利息台账—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_QXMYJLXTZ',
                    SQLCODE,
                    SQLERRM);
   END yjlxtz_all;

   --
   -----------------------------------------------------------------------------
   -- 2.单项目应计利息台账
   PROCEDURE yjlxtz_one (vv_date          IN DATE,                                                                --截止日期
                         v_cprojectcode   IN VARCHAR2 DEFAULT NULL,                                               --项目编码
                         v_cprojectname   IN VARCHAR2 DEFAULT NULL)                                               --项目名称
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理数据先
      DELETE FROM t_hig_borrow_dxmyjlxtz_his t
            WHERE t.cdate = v_date;                                                                            --插入数据的日期

      IF v_cprojectcode IS NULL AND v_cprojectname IS NULL
      THEN                                                                                                        --循环计算
         FOR j IN (SELECT t.cyhcode, t.cyhname
                     FROM t_hig_szproject t
                    WHERE t.cstatus = y AND t.byzflag = 0                                              --haier要求只显示这样的数据
                                                         )
         LOOP
            p_hig_borrow_dxmyjlxtz (j.cyhcode, j.cyhname, v_date);
         END LOOP;
      ELSE
         p_hig_borrow_dxmyjlxtz (v_cprojectcode, v_cprojectname, v_date);
      END IF;

      /*  格式化  */
      DELETE FROM t_hig_borrow_dxmyjlxtz t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_dxmyjlxtz t (t.bnijxmoney,
                                            t.bnijxmoneycj,
                                            t.byijxmoney,
                                            t.byijxmoneycj,
                                            t.cdate,
                                            t.cdkdocument,
                                            t.cinstallmentname,
                                            t.cprojectcode,
                                            t.cprojectname,
                                            t.csxtypename,
                                            t.czjfroms,
                                            t.ddkbegindate,
                                            t.dhkdate,
                                            t.idkmoney,
                                            t.ijxmoney,
                                            t.inothkmoney,
                                            t.iorder,
                                            t.iyfrate,
                                            t.iyjrate)
         SELECT fn_fmt_number (s.bnijxmoney, 0, 10000),                                                       --本年累计应计利息
                fn_fmt_number (s.bnijxmoneycj, 0, 10000),                                                   --本年累计内部拆借利息
                fn_fmt_number (s.byijxmoney, 0, 10000),                                                         --本月应计利息
                fn_fmt_number (s.byijxmoneycj, 0, 10000),                                                     --本月内部拆借利息
                s.cdate,
                s.cdkdocument,
                s.cinstallmentname,
                s.cprojectcode,
                s.cprojectname,
                s.csxtypename,
                s.czjfroms,
                s.ddkbegindate,
                s.dhkdate,
                fn_fmt_number (s.idkmoney, 0, 10000),                                                            --贷款总金额
                fn_fmt_number (s.ijxmoney, 0, 10000),                                                           --累计应计利息
                fn_fmt_number (s.inothkmoney, 0, 10000),                                                          --贷款余额
                s.iorder,
                fn_fmt_percent (NVL (s.iyfrate, 0) * 100, 2),                                                     --应付利率
                fn_fmt_percent (NVL (s.iyjrate, 0) * 100, 2)                                                      --应计利率
           FROM t_hig_borrow_dxmyjlxtz_his s
          WHERE s.cdate = v_date;

      COMMIT;
      --日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMYJLXTZ',
                   'HIG单项目应计利息台账—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMYJLXTZ',
                    SQLCODE,
                    SQLERRM);
   END yjlxtz_one;

   /*
   *******************************************************************************
   *******************************************************
   *******************************************************************************
   *****************************************4、应付利息台账
   *******************************************************************************
   *******************************************************
   */
   --
   --------------------------------------------------------------------------------------------
   -- 4、应付利息台账
   /*
   1全项目应付利息台账
   */
   PROCEDURE yflxtz_all (vv_date IN DATE)                                                                         --截止日期
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理
      DELETE FROM t_hig_borrow_qxmyflxtz_his t
            WHERE t.cdate = v_date;

      --执行存储
      p_hig_borrow_qxmyflxtz (v_date);
      --合计
      util_hejiproject ('UPDATE  
T_HIG_BORROW_QXMYFLXTZ_HIS T
SET  
(    
LJZF,    
LJYFGDTR,    
LJYFGDTRLX,    
LJWFGDTR,    
LJYFKFD,    
LJYFKFDLX,    
BNLJZF,    
BNYFGDTR,    
BNYFGDTRLX,    
BNWFGDTR,    
BNYFKFD,    
BNYFKFDLX  
)  
=  
(    
SELECT      
SUM(LJZF),      
SUM(LJYFGDTR),      
SUM(LJYFGDTRLX),      
SUM(LJWFGDTR),      
SUM(LJYFKFD),      
SUM(LJYFKFDLX),      
SUM(BNLJZF),      
SUM(BNYFGDTR),      
SUM(BNYFGDTRLX),      
SUM(BNWFGDTR),      
SUM(BNYFKFD),      
SUM(BNYFKFDLX)    
FROM      
T_HIG_BORROW_QXMYFLXTZ_HIS S    
WHERE      
S.CPROJECTCODE IN(HEJI_CHILLDRENS)    
AND S.CDATE       = :2  
)
WHERE  
T.CPROJECTCODE = :3
AND T.CDATE      = :4
AND T.CSTATUS    = ''N'' ', v_date);

      --格式化
      DELETE FROM t_hig_borrow_qxmyflxtz t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_qxmyflxtz t (xmmc,
                                            jytz,
                                            ljzf,
                                            ljyfgdtr,
                                            ljyfgdtrlx,
                                            ljwfgdtr,
                                            ljyfkfd,
                                            ljyfkfdlx,
                                            bnljzf,
                                            bnyfgdtr,
                                            bnyfgdtrlx,
                                            bnwfgdtr,
                                            bnyfkfd,
                                            bnyfkfdlx,
                                            cdate,
                                            cprojectcode,
                                            cprojectnamefmt,
                                            cstatus,
                                            iorder)
         SELECT s.xmmc,
                s.jytz,
                --全部格式化到万
                fn_fmt_number (s.ljzf, 0, 10000),
                fn_fmt_number (s.ljyfgdtr, 0, 10000),
                fn_fmt_number (s.ljyfgdtrlx, 0, 10000),
                fn_fmt_number (s.ljwfgdtr, 0, 10000),
                fn_fmt_number (s.ljyfkfd, 0, 10000),
                fn_fmt_number (s.ljyfkfdlx, 0, 10000),
                fn_fmt_number (s.bnljzf, 0, 10000),
                fn_fmt_number (s.bnyfgdtr, 0, 10000),
                fn_fmt_number (s.bnyfgdtrlx, 0, 10000),
                fn_fmt_number (s.bnwfgdtr, 0, 10000),
                fn_fmt_number (s.bnyfkfd, 0, 10000),
                fn_fmt_number (s.bnyfkfdlx, 0, 10000),
                s.cdate,
                s.cprojectcode,
                s.cprojectnamefmt,
                s.cstatus,
                s.iorder
           FROM t_hig_borrow_qxmyflxtz_his s
          WHERE s.cdate = v_date;

      COMMIT;
      --日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMYFLXTZ',
                   'HIG全项目应付利息台账—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMYFLXTZ',
                    SQLCODE,
                    SQLERRM);
   END yflxtz_all;

   /*
   2单项目应付利息台账-到分期
   */
   PROCEDURE yflxtz_fq (vv_date          IN DATE,                                                                 --截止日期
                        v_cprojectcode   IN VARCHAR2 DEFAULT NULL,                                                --项目编码
                        v_cprojectname   IN VARCHAR2 DEFAULT NULL)                                                --项目名称
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理
      DELETE FROM t_hig_borrow_dxmyflxtz_fq_his t
            WHERE t.cdate = v_date;

      --执行存储
      p_hig_borrow_dxmyflxtz_fq (v_date, NULL, NULL);

      --格式化
      DELETE FROM t_hig_borrow_dxmyflxtz_fq t
            WHERE t.cdate = v_date;

      INSERT INTO t_hig_borrow_dxmyflxtz_fq t (fq,
                                               ljzf,
                                               ljyfgdtr,
                                               ljyfgdtrlx,
                                               ljwfgdtr,
                                               ljyfkfd,
                                               ljyfkfdlx,
                                               bnljzf,
                                               bnyfgdtr,
                                               bnyfgdtrlx,
                                               bnwfgdtr,
                                               bnyfkfd,
                                               bnyfkfdlx,
                                               byyfgdtr,
                                               byyfgdtrlx,
                                               bywfgdtr,
                                               byyfkfd,
                                               byyfkfdlx,
                                               cdate,
                                               cprojectcode,
                                               cprojectname,
                                               iorder,
                                               fqcode)
         SELECT s.fq,
                fn_fmt_number (s.ljzf, 0, 10000),
                fn_fmt_number (s.ljyfgdtr, 0, 10000),
                fn_fmt_number (s.ljyfgdtrlx, 0, 10000),
                fn_fmt_number (s.ljwfgdtr, 0, 10000),
                fn_fmt_number (s.ljyfkfd, 0, 10000),
                fn_fmt_number (s.ljyfkfdlx, 0, 10000),
                fn_fmt_number (s.bnljzf, 0, 10000),
                fn_fmt_number (s.bnyfgdtr, 0, 10000),
                fn_fmt_number (s.bnyfgdtrlx, 0, 10000),
                fn_fmt_number (s.bnwfgdtr, 0, 10000),
                fn_fmt_number (s.bnyfkfd, 0, 10000),
                fn_fmt_number (s.bnyfkfdlx, 0, 10000),
                fn_fmt_number (s.byyfgdtr, 0, 10000),
                fn_fmt_number (s.byyfgdtrlx, 0, 10000),
                fn_fmt_number (s.bywfgdtr, 0, 10000),
                fn_fmt_number (s.byyfkfd, 0, 10000),
                fn_fmt_number (s.byyfkfdlx, 0, 10000),
                s.cdate,
                s.cprojectcode,
                s.cprojectname,
                s.iorder,
                s.fqcode
           FROM t_hig_borrow_dxmyflxtz_fq_his s
          WHERE s.cdate = v_date;

      COMMIT;
      --日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMYFLXTZ_FQ',
                   'HIG单项目应付利息台账-到分期—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMYFLXTZ_FQ',
                    SQLCODE,
                    SQLERRM);
   END yflxtz_fq;

   /*
   2单项目应付利息台账-到单据
   */
   PROCEDURE yflxtz_dk (vv_date          IN DATE,                                                                 --截止日期
                        v_cprojectcode   IN VARCHAR2 DEFAULT NULL,                                                --项目编码
                        v_cprojectname   IN VARCHAR2 DEFAULT NULL)                                                --项目名称
   AS
      v_date   DATE := TO_DATE (TO_CHAR (vv_date, 'YYYY-MM-DD'), 'YYYY-MM-DD');
   BEGIN
      --清理
      DELETE FROM t_hig_borrow_dxmyflxtz_dk_his t;

      --
      p_hig_borrow_dxmyflxtz_dk (NULL, NULL, NULL);

      DELETE FROM t_hig_borrow_dxmyflxtz_dk t;

      INSERT INTO t_hig_borrow_dxmyflxtz_dk t (dkdh,
                                               fq,
                                               zjsx,
                                               zjly,
                                               dkzje,
                                               yingflx,
                                               yiflx,
                                               weiflx,
                                               cprojectcode,
                                               cprojectname,
                                               iorder,
                                               fqcode)
         SELECT dkdh,
                fq,
                zjsx,
                zjly,
                fn_fmt_number (s.dkzje, 0, 10000),
                fn_fmt_number (s.yingflx, 0, 10000),
                fn_fmt_number (s.yiflx, 0, 10000),
                fn_fmt_number (s.weiflx, 0, 10000),
                cprojectcode,
                cprojectname,
                iorder,
                fqcode
           FROM t_hig_borrow_dxmyflxtz_dk_his s;

      COMMIT;
      --日志
      log_success ('calcjobs',
                   'HIGTBS-P_HIG_BORROW_DXMYFLXTZ_DK',
                   'HIG单项目应付利息台账-到单据—项目 | ',
                   '计算-成功');
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         log_error ('calcjobs',
                    'HIGTBS-P_HIG_BORROW_DXMYFLXTZ_DK',
                    SQLCODE,
                    SQLERRM);
   END yflxtz_dk;

   -----------------------------------------------------------------------------------------------------------------------
   -----------------------------------------------------------------------------------------------------------------------
   -- 下面是私有方法,禁止调用
   -----------------------------------------------------------------------------------------------------------------------
   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMZJDKTZ_FQ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmzjdktz_fq (v_cprojectcode IN VARCHAR2,                                               --项目编码
                                                                   v_cprojectname IN VARCHAR2,                    --项目名称
                                                                                              v_date IN DATE)     --截止日期
   /*
   2.单项目融资台账-到分期
   yinbin
   */
   AS
      --贷款表的每行的类型
      --T_HIG_BORROW_DK T_HIG_BORROW_DK%ROWTYPE;
      --temp表的每行的类型
      t_qxmzjdktz_fq   t_hig_borrow_dxmzjdktz_fq_his%ROWTYPE;

      --游标  查询单个项目,按照分期分组和排序
      CURSOR cur_qxmzjdktz_fq (cv_cprojectcode VARCHAR2, cv_cprojectname VARCHAR2, cv_date DATE)
      IS
           SELECT b.idkbudget,                                                                                    --贷款预算
                  f.cinstallmentcode,                                                                            -- 分期编码
                  f.cinstallmentname,                                                                               --分期
                  f.iorder
             FROM t_hig_rzqzqbudget b LEFT JOIN t_hig_szinstallment f ON b.cinstallmentcode = f.cinstallmentcode
            WHERE b.cstatus = y                                                                             --仅仅查询有效的贷款单
                               AND b.cprojectcode = cv_cprojectcode
         --        AND FN_DATE('JD',B.DCREATEDATE,V_DATE)=1
         ORDER BY f.iorder;                                                                                     --按照分期排序

      --游标  查询全周期预算
      --    CURSOR CUR_DKYS(CV_CPROJECTCODE VARCHAR2,CV_CPROJECTNAME VARCHAR2,
      -- CV_FENQI VARCHAR2)
      --    IS
      --        SELECT
      --            NVL(T.IDKBUDGET,0)--项目每个分期预算
      --        FROM
      --            T_HIG_RZQZQBUDGET T
      --        WHERE
      --            T.CSTATUS          =Y
      --        AND T.CPROJECTCODE     =CV_CPROJECTCODE
      --        AND T.CINSTALLMENTCODE =CV_FENQI; --分期
      --已付利息
      p_yflx_his       NUMBER (18, 4) := 0;
      --应计利息
      p_yjlx_his       NUMBER (18, 4) := 0;
      --分期
      -- P_FQ T_HIG_BORROW_DK.CINSTALLMENTNAME%TYPE;
      --临时变量
      p_num            NUMBER := 0;
   BEGIN
      SELECT COUNT (*)
        INTO p_num
        FROM t_hig_borrow_dk t
       WHERE t.cstatus = y                                                                                  --仅仅查询有效的贷款单
                          AND t.cprojectcode = v_cprojectcode AND fn_date ('JD', t.ddkbegindate, v_date) = 1;

      IF p_num <= 0
      THEN
         RETURN;
      END IF;

      --循环计算每个分期
      OPEN cur_qxmzjdktz_fq (v_cprojectcode, v_cprojectname, v_date);

      IF cur_qxmzjdktz_fq%NOTFOUND
      THEN
         sys.DBMS_OUTPUT.put_line ('WARN:根据您输入的参数无法查出任何数据!EXITED');
         RETURN;
      END IF;

      LOOP
         FETCH cur_qxmzjdktz_fq
            INTO t_qxmzjdktz_fq.dkys, t_qxmzjdktz_fq.fqcode,                                                     --计算 分期
                                                            t_qxmzjdktz_fq.fenqi,                                --计算 分期
                                                                                 t_qxmzjdktz_fq.iorder;

         EXIT WHEN cur_qxmzjdktz_fq%NOTFOUND;

         --    P_NUM:=P_NUM+1;
         --    SYS.DBMS_OUTPUT.PUT_LINE( '
         -----------------------------------------------------分期:'||
         -- T_QXMZJDKTZ_FQ.FENQI);
         /*查询条件固定:项目名称+分期+日期小于v_date,因为游标已经分组,则这里不用分组了*/
         --查询授信额度A
         SELECT NVL (SUM (NVL (t.isxmoney, 0)), 0)                                                                --授信金额
           INTO t_qxmzjdktz_fq.isxmoney                                                                          --授信额度A
           FROM t_hig_borrow_sx t
          WHERE     t.cstatus = y
                AND (t.cprojectname = v_cprojectname OR t.cprojectcode = v_cprojectcode)                          --项目名称
                AND t.cinstallmentcode = t_qxmzjdktz_fq.fqcode;                                                     --分期

         --    IF SQL%ROWCOUNT        =1 THEN
         --      SYS.DBMS_OUTPUT.PUT_LINE('INFO:计算:授信额度A 成功!');
         --    END IF;
         --贷款合计B
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)                                                                --贷款金额
           INTO t_qxmzjdktz_fq.idkmoney                                                                          --贷款合计B
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND (t.cprojectname = v_cprojectname OR t.cprojectcode = v_cprojectcode)                          --项目名称
                AND t.cinstallmentcode = t_qxmzjdktz_fq.fqcode                                                      --分期
                AND fn_date ('JD', t.ddkbegindate, v_date) = 1;

         --GROUP BY T.CINSTALLMENTNAME; --这种情况下group by多此一举
         --    IF SQL%ROWCOUNT > 0 THEN
         --      SYS.DBMS_OUTPUT.PUT_LINE('INFO:计算:贷款合计B 成功!');
         --    END IF;
         --查询还款合计D 从hk表
         SELECT NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO t_qxmzjdktz_fq.ihkmoney                                                                          --还款合计D
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND (t.cprojectname = v_cprojectname OR t.cprojectcode = v_cprojectcode)                          --项目名称
                AND t.cinstallmentname = t_qxmzjdktz_fq.fenqi                                                       --分期
                AND fn_date ('JD', t.dhkdate, v_date) = 1;

         --    IF SQL%ROWCOUNT                   > 0 THEN
         --      SYS.DBMS_OUTPUT.PUT_LINE('INFO:计算:还款合计D 成功!');
         --    END IF;
         --        BEGIN
         --            SELECT
         --                NVL(SUM(T.IDKBUDGET),0)--项目每个分期预算
         --            INTO
         --                T_QXMZJDKTZ_FQ.DKYS
         --            FROM
         --                T_HIG_RZQZQBUDGET T
         --            WHERE
         --                T.CSTATUS          =Y
         --            AND T.CPROJECTCODE     =T_QXMZJDKTZ_FQ.CPROJECTCODE
         --            AND T.CINSTALLMENTNAME =T_QXMZJDKTZ_FQ.FENQI; --分期
         --            --            OPEN CUR_DKYS(V_CPROJECTCODE,V_CPROJECTNAME,
         -- T_QXMZJDKTZ_FQ.FENQI);
         --            --                FETCH
         --            --                    CUR_DKYS
         --            --                INTO
         --            --                    T_QXMZJDKTZ_FQ.DKYS;
         --            --            CLOSE CUR_DKYS;
         --        EXCEPTION
         --        WHEN OTHERS THEN
         --            T_QXMZJDKTZ_FQ.DKYS:=0;
         --        END ;
         --查询利息分摊 四证前 四证后, 从计息单表/还息单表
         -----------------------------已付利息 计算
         SELECT NVL (SUM (NVL (t.iyfmoney, 0)), 0)                                                              --已付利息金额
           INTO p_yflx_his
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND (t.cprojectname = v_cprojectname                                                              --项目名称
                                                    OR t.cprojectcode = v_cprojectcode)                           --项目编码
                AND t.cinstallmentname = t_qxmzjdktz_fq.fenqi                                                       --分期
                AND fn_date ('JD', t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;                                                    --业务要求仅仅查询计算 开发贷款 有关的数据;

         --    IF SQL%NOTFOUND THEN
         --      SYS.DBMS_OUTPUT.PUT_LINE('WARN:还没有已付利息,为0');
         --    END IF;
         -----------------------------应计利息 计算
         SELECT NVL (SUM (NVL (t.iyjmoney, 0)), 0)                                                              --应计利息金额
           INTO p_yjlx_his
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND (t.cprojectname = v_cprojectname                                                              --项目名称
                                                    OR t.cprojectcode = v_cprojectcode)                           --项目编码
                AND t.cinstallmentname = t_qxmzjdktz_fq.fenqi                                                       --分期
                AND fn_date ('JD', t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;                                                    --业务要求仅仅查询计算 开发贷款 有关的数据;

         --    IF SQL%NOTFOUND THEN
         --      SYS.DBMS_OUTPUT.PUT_LINE('WARN:还没有应计利息,为0');
         --    END IF;
         --利息分摊 四证前
         t_qxmzjdktz_fq.lxftszq := NVL (p_yflx_his, 0) - NVL (p_yjlx_his, 0);
         --利息分摊 四证后
         t_qxmzjdktz_fq.lxftszh := NVL (p_yjlx_his, 0);
         --    DBMS_OUTPUT.PUT_LINE('INFO:计算:利息分摊 成功');
         --    DBMS_OUTPUT.PUT_LINE('INFO:利息分摊分别是,前:'||T_QXMZJDKTZ_FQ.LXFTSZQ||',后:'
         -- || T_QXMZJDKTZ_FQ.LXFTSZH);
         --计算可用额度C=A-B、贷款余额E=B-D
         t_qxmzjdktz_fq.keyongedu := NVL (t_qxmzjdktz_fq.isxmoney, 0) - NVL (t_qxmzjdktz_fq.idkmoney, 0);
         t_qxmzjdktz_fq.daikuanyue := NVL (t_qxmzjdktz_fq.idkmoney, 0) - NVL (t_qxmzjdktz_fq.ihkmoney, 0);

         --    SYS.DBMS_OUTPUT.PUT_LINE('INFO:计算:可用额度C=A-B、贷款余额E=B-D 成功!');
         --插入表,end
         INSERT INTO t_hig_borrow_dxmzjdktz_fq_his (fenqi,
                                                    dkys,
                                                    isxmoney,
                                                    keyongedu,
                                                    daikuanyue,
                                                    idkmoney,
                                                    ihkmoney,
                                                    lxftszq,
                                                    lxftszh,
                                                    cdate,
                                                    cprojectname,
                                                    cprojectcode,
                                                    iorder,
                                                    fqcode)
              VALUES (t_qxmzjdktz_fq.fenqi,
                      t_qxmzjdktz_fq.dkys,
                      t_qxmzjdktz_fq.isxmoney,
                      t_qxmzjdktz_fq.keyongedu,
                      t_qxmzjdktz_fq.daikuanyue,
                      t_qxmzjdktz_fq.idkmoney,
                      t_qxmzjdktz_fq.ihkmoney,
                      t_qxmzjdktz_fq.lxftszq,
                      t_qxmzjdktz_fq.lxftszh,
                      v_date,
                      CASE
                         WHEN v_cprojectname IS NULL
                         THEN
                            (SELECT cprojectname
                               FROM t_hig_borrow_dk t
                              WHERE t.cprojectcode = v_cprojectcode)
                         ELSE
                            v_cprojectname
                      END,
                      CASE
                         WHEN v_cprojectcode IS NULL
                         THEN
                            (SELECT t.cprojectcode
                               FROM t_hig_borrow_dk t
                              WHERE t.cprojectname = v_cprojectname)
                         ELSE
                            v_cprojectcode
                      END,
                      t_qxmzjdktz_fq.iorder,
                      t_qxmzjdktz_fq.fqcode);
      END LOOP;

      CLOSE cur_qxmzjdktz_fq;

      --  COMMIT;
      --  IF P_NUM <=0 THEN
      --    RETURN;
      --  END IF;
      --合计 可以不分组,因为默认已经分组
      INSERT INTO t_hig_borrow_dxmzjdktz_fq_his t (fenqi,
                                                   dkys,
                                                   isxmoney,
                                                   keyongedu,
                                                   daikuanyue,
                                                   idkmoney,
                                                   ihkmoney,
                                                   lxftszq,
                                                   lxftszh,
                                                   cdate,
                                                   cprojectname,
                                                   cprojectcode,
                                                   iorder,
                                                   fqcode)
         SELECT heji_name,
                SUM (s.dkys),
                SUM (s.isxmoney),
                SUM (s.keyongedu),
                SUM (s.daikuanyue),
                SUM (s.idkmoney),
                SUM (s.ihkmoney),
                SUM (s.lxftszq),
                SUM (s.lxftszh),
                v_date,
                v_cprojectname,
                v_cprojectcode,
                1,
                heji_code                                                                                        --先这样用吧
           FROM t_hig_borrow_dxmzjdktz_fq_his s
          WHERE s.cdate = v_date AND (s.cprojectcode = v_cprojectcode OR s.cprojectname = v_cprojectname);

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmzjdktz_fq;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_QXMYJLXTZ2 老版本的存储,测试全部通过,还可以用
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_qxmyjlxtz2 (v_date IN DATE)                                                             --截止日期
   IS
      /*
      全项目应计利息台账
      yinbin
      */
      --temp表的每行的类型
      t_qxmyjlxtz   t_hig_borrow_qxmyjlxtz_his%ROWTYPE;

      -- 游标 查询项目名称 todo 可能会根据业务进行修改
      CURSOR cur_szproject (cv_bflag NUMBER)                                                                     --合法的数据
      IS
         SELECT                                                                                     /*T.CYHCODE,--项目编码*/
               t.cyhcode,                                                                                         --项目编码
                t.cyhname,                                                                                        --项目名称
                t.cxmjytz,                                                                                      --项目经营体长
                t.iorder,                                                                                         --项目排序
                t.cprojectname,                                                                              --格式化后的项目名称
                t.cstatus                                                                                        --是否是项目
           FROM t_hig_szproject t
          WHERE                                                                        -- T.CSTATUS = Y AND   --是项目,TODO
                --      T.BYZFLAG =0     AND    --haier要求只计算这部分数据。
                t.bflag = cv_bflag;                                                                               --状态合法

      --本年   需要改为 sysdate   '2012-03-07'
      p_bennian     NUMBER := EXTRACT (YEAR FROM v_date);
      --本月   需要改为 sysdate
      p_benyue      NUMBER := EXTRACT (MONTH FROM v_date);
   /*--项目编码临时变量
   P_CPROJECTCODE VARCHAR2(20);*/
   BEGIN
      /*
      验证
      */
      IF v_date IS NULL
      THEN
         --    SYS.DBMS_OUTPUT.PUT_LINE('v_date不能为null') ;
         RETURN;
      END IF;

      /*
      循环每一个总项目
      */
      OPEN cur_szproject (0);

      IF cur_szproject%NOTFOUND
      THEN
         --    SYS.DBMS_OUTPUT.PUT_LINE('警告:根据您输入的参数无法查出任何数据!EXITED') ;
         RETURN;
      END IF;

      LOOP
         FETCH cur_szproject
            INTO t_qxmyjlxtz.cprojectcode,                                                                        --项目编码
                 t_qxmyjlxtz.cprojectname,                                                                        --项目名称
                 t_qxmyjlxtz.jytz,                                                                                --经营体长
                 t_qxmyjlxtz.iorder,                                                                              --项目排序
                 t_qxmyjlxtz.cprojectnamefmt,                                                                --格式化后的项目名称
                 t_qxmyjlxtz.cstatus;                                                                            --是否是项目

         EXIT WHEN cur_szproject%NOTFOUND;

         --    DBMS_OUTPUT.PUT_LINE(T_QXMYJLXTZ.CPROJECTNAME || '            ' ||
         -- T_QXMYJLXTZ.JYTZ) ;
         --
         --
         -------------------------------------------------------------------------------------------------
         -- 内部资金拆借利息
         --本年累计
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.cjbnlj                                                                          --累计利息(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND fn_date (y, t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.cj;                                                                    --内部资金拆借

         --本月累计
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.cjbylj                                                                          --累计利息(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND fn_date ('M', t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.cj;                                                                    --内部资金拆借

         --
         -------------------------------------------------------------------------------------------------
         t_qxmyjlxtz.gdyjlxys := 0;

         -- ①股东投入应计利息                        TODO
         --应计利息预算A'
         --        SELECT
         --            NVL(SUM(T.IYJBUDGET), 0)
         --        INTO
         --            T_QXMYJLXTZ.GDYJLXYS --应计利息预算
         --        FROM
         --            T_HIG_RZBUDGET T
         --        WHERE
         --            T.CSTATUS      =Y
         --        AND T.CPROJECTCODE = T_QXMYJLXTZ.CPROJECTCODE   --项目名称和编码匹配
         --        AND T.CSXTYPECODE  = ZJSX.GD; --资金属性名称
         --累计应计利息①
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.gdljyjlx                                                                        --累计利息(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND t.csxtypecode = zjsx.gd
                AND fn_date ('JD', t.djxenddate, v_date) = 1;

         --本年预算
         SELECT NVL (SUM (t.iyjbudget), 0)
           INTO t_qxmyjlxtz.gdbnys                                                                              --应计利息预算
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND t.iyear = p_bennian
                AND t.csxtypecode = zjsx.gd;                                                                    --资金属性名称

         --本年实际
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.gdbnsj                                                                          --本年实际(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND fn_date (y, t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.gd;

         --本年差
         t_qxmyjlxtz.gdbnc := NVL (t_qxmyjlxtz.gdbnys, 0) - NVL (t_qxmyjlxtz.gdbnsj, 0);

         --本月预算
         SELECT NVL (SUM (t.iyjbudget), 0)
           INTO t_qxmyjlxtz.gdbyys                                                                              --应计利息预算
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND t.iyear = p_bennian
                AND t.imonth = p_benyue
                AND t.csxtypecode = zjsx.gd;                                                                    --资金属性名称

         --本月实际
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.gdbysj                                                                          --本月实际(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND fn_date ('M', t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.gd;

         --本月差
         t_qxmyjlxtz.gdbyc := NVL (t_qxmyjlxtz.gdbyys, 0) - NVL (t_qxmyjlxtz.gdbysj, 0);
         --
         -------------------------------------------------------------------------------------------------
         -- TODO
         -- ②开发贷应计利息
         --应计利息预算A'
         t_qxmyjlxtz.gdyjlxys := 0;

         --        SELECT
         --            NVL(SUM(T.IYJBUDGET), 0)
         --        INTO
         --            T_QXMYJLXTZ.KFYJLXYS --应计利息预算
         --        FROM
         --            T_HIG_RZBUDGET T
         --        WHERE
         --            T.CSTATUS      =Y
         --        AND T.CPROJECTCODE = T_QXMYJLXTZ.CPROJECTCODE   --项目名称和编码匹配
         --        AND T.CSXTYPECODE  = ZJSX.KF; --资金属性名称
         --累计应计利息①
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.kfljyjlx                                                                        --累计利息(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND t.csxtypecode = zjsx.kf
                AND fn_date ('JD', t.djxenddate, v_date) = 1;

         --本年预算
         SELECT NVL (SUM (t.iyjbudget), 0)
           INTO t_qxmyjlxtz.kfbnys                                                                              --应计利息预算
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND t.iyear = p_bennian
                AND t.csxtypecode = zjsx.kf;                                                                    --资金属性名称

         --本年实际
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.kfbnsj                                                                          --本年实际(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND fn_date (y, t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;

         --本年差
         t_qxmyjlxtz.kfbnc := NVL (t_qxmyjlxtz.kfbnys, 0) - NVL (t_qxmyjlxtz.kfbnsj, 0);

         --本月预算
         SELECT NVL (SUM (t.iyjbudget), 0)
           INTO t_qxmyjlxtz.kfbyys                                                                              --应计利息预算
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND t.iyear = p_bennian
                AND t.imonth = p_benyue
                AND t.csxtypecode = zjsx.kf;                                                                    --资金属性名称

         --本月实际
         SELECT NVL (SUM (t.iyjmoney), 0)
           INTO t_qxmyjlxtz.kfbysj                                                                          --本月实际(应计利息)
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmyjlxtz.cprojectcode                                                --项目名称和编码匹配
                AND fn_date ('M', t.djxenddate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;

         --本月差
         t_qxmyjlxtz.kfbyc := NVL (t_qxmyjlxtz.kfbyys, 0) - NVL (t_qxmyjlxtz.kfbysj, 0);
         --
         ---------------------------------------------------------------------------------------------------
         -- 合计
         --E2E资金成本利息总额动态预算A=A'+A'' TODO
         t_qxmyjlxtz.hjzjcblxzdtys := NVL (t_qxmyjlxtz.gdyjlxys, 0) + NVL (t_qxmyjlxtz.kfyjlxys, 0);
         --累计应计利息C=①+②
         t_qxmyjlxtz.hjljyjlx := NVL (t_qxmyjlxtz.gdljyjlx, 0) + NVL (t_qxmyjlxtz.kfljyjlx, 0);
         --本年预算
         t_qxmyjlxtz.hjbnys := NVL (t_qxmyjlxtz.gdbnys, 0) + NVL (t_qxmyjlxtz.kfbnys, 0);
         --本年实际
         t_qxmyjlxtz.hjbnsj := NVL (t_qxmyjlxtz.gdbnsj, 0) + NVL (t_qxmyjlxtz.kfbnsj, 0);
         --本年差
         t_qxmyjlxtz.hjbnc := NVL (t_qxmyjlxtz.gdbnc, 0) + NVL (t_qxmyjlxtz.kfbnc, 0);
         --本月预算
         t_qxmyjlxtz.hjbyys := NVL (t_qxmyjlxtz.gdbyys, 0) + NVL (t_qxmyjlxtz.kfbyys, 0);
         --本月实际
         t_qxmyjlxtz.hjbysj := NVL (t_qxmyjlxtz.gdbysj, 0) + NVL (t_qxmyjlxtz.kfbysj, 0);
         --本月差
         t_qxmyjlxtz.hjbyc := NVL (t_qxmyjlxtz.gdbyc, 0) + NVL (t_qxmyjlxtz.kfbyc, 0);

         /*
         插入数据
         */
         INSERT INTO t_hig_borrow_qxmyjlxtz_his (cprojectname,
                                                 jytz,
                                                 hjzjcblxzdtys,
                                                 hjljyjlx,
                                                 hjbnys,
                                                 hjbnsj,
                                                 hjbnc,
                                                 hjbyys,
                                                 hjbysj,
                                                 hjbyc,
                                                 cjbnlj,
                                                 cjbylj,
                                                 gdyjlxys,
                                                 gdljyjlx,
                                                 gdbnys,
                                                 gdbnsj,
                                                 gdbnc,
                                                 gdbyys,
                                                 gdbysj,
                                                 gdbyc,
                                                 kfyjlxys,
                                                 kfljyjlx,
                                                 kfbnys,
                                                 kfbnsj,
                                                 kfbnc,
                                                 kfbyys,
                                                 kfbysj,
                                                 kfbyc,
                                                 cdate,
                                                 iorder,
                                                 cprojectcode,
                                                 cprojectnamefmt,
                                                 cstatus)
              VALUES (t_qxmyjlxtz.cprojectname,
                      t_qxmyjlxtz.jytz,
                      t_qxmyjlxtz.hjzjcblxzdtys,
                      t_qxmyjlxtz.hjljyjlx,
                      t_qxmyjlxtz.hjbnys,
                      t_qxmyjlxtz.hjbnsj,
                      t_qxmyjlxtz.hjbnc,
                      t_qxmyjlxtz.hjbyys,
                      t_qxmyjlxtz.hjbysj,
                      t_qxmyjlxtz.hjbyc,
                      t_qxmyjlxtz.cjbnlj,
                      t_qxmyjlxtz.cjbylj,
                      t_qxmyjlxtz.gdyjlxys,
                      t_qxmyjlxtz.gdljyjlx,
                      t_qxmyjlxtz.gdbnys,
                      t_qxmyjlxtz.gdbnsj,
                      t_qxmyjlxtz.gdbnc,
                      t_qxmyjlxtz.gdbyys,
                      t_qxmyjlxtz.gdbysj,
                      t_qxmyjlxtz.gdbyc,
                      t_qxmyjlxtz.kfyjlxys,
                      t_qxmyjlxtz.kfljyjlx,
                      t_qxmyjlxtz.kfbnys,
                      t_qxmyjlxtz.kfbnsj,
                      t_qxmyjlxtz.kfbnc,
                      t_qxmyjlxtz.kfbyys,
                      t_qxmyjlxtz.kfbysj,
                      t_qxmyjlxtz.kfbyc,
                      v_date,
                      t_qxmyjlxtz.iorder,
                      t_qxmyjlxtz.cprojectcode,
                      t_qxmyjlxtz.cprojectnamefmt,
                      t_qxmyjlxtz.cstatus);
      END LOOP;

      --  SYS.DBMS_OUTPUT.PUT_LINE('INFO:总共查询了'||CUR_SZPROJECT%ROWCOUNT||'个项目!') ;
      CLOSE cur_szproject;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_qxmyjlxtz2;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_QXMYJLXTZ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_qxmyjlxtz (v_date IN DATE)                                                              --截止日期
   IS
   /*
   全项目应计利息台账

   yinbin

四种方式 4

   */

   BEGIN
      /*
      插入数据
      */
      INSERT INTO t_hig_borrow_qxmyjlxtz_his (cprojectcode,
                                              cprojectname,
                                              jytz,
                                              iorder,
                                              cprojectnamefmt,
                                              cstatus,
                                              cjbnlj,
                                              cjbylj,
                                              gdyjlxys,
                                              gdljyjlx,
                                              gdbnys,
                                              gdbnsj,
                                              gdbnc,
                                              gdbyys,
                                              gdbysj,
                                              gdbyc,
                                              kfyjlxys,
                                              kfljyjlx,
                                              kfbnys,
                                              kfbnsj,
                                              kfbnc,
                                              kfbyys,
                                              kfbysj,
                                              kfbyc,
                                              hjzjcblxzdtys,
                                              hjljyjlx,
                                              hjbnys,
                                              hjbnsj,
                                              hjbnc,
                                              hjbyys,
                                              hjbysj,
                                              hjbyc,
                                              cdate)
         WITH yz_jxje
              AS (  SELECT cprojectcode,
                           csxtypecode,
                           'M' AS year_month,
                           SUM (iyjmoney) AS jxje
                      FROM t_hig_borrow_jx
                     WHERE cstatus = 'Y' AND hig_report_borrow.fn_date ('M', djxenddate, v_date) = 1
                  GROUP BY cprojectcode, csxtypecode
                  UNION ALL
                    SELECT cprojectcode,
                           csxtypecode,
                           'Y' AS year_month,
                           SUM (iyjmoney) AS jxje
                      FROM t_hig_borrow_jx
                     WHERE cstatus = 'Y' AND hig_report_borrow.fn_date ('Y', djxenddate, v_date) = 1
                  GROUP BY cprojectcode, csxtypecode
                  UNION ALL
                    SELECT cprojectcode,
                           csxtypecode,
                           'JD' AS year_month,
                           NVL (SUM (iyjmoney), 0) AS jxje
                      FROM t_hig_borrow_jx
                     WHERE cstatus = 'Y' AND hig_report_borrow.fn_date ('JD', djxenddate, v_date) = 1
                  GROUP BY cprojectcode, csxtypecode),
              yz_yjlxys
              AS (  SELECT t.cprojectcode,
                           t.csxtypecode,
                           'Y' AS year_month,
                           NVL (SUM (t.iyjbudget), 0) AS yjlxys
                      FROM t_hig_rzbudget t
                     WHERE t.cstatus = 'Y' AND t.iyear = EXTRACT (YEAR FROM v_date)
                  GROUP BY t.cprojectcode, t.csxtypecode
                  UNION ALL
                    SELECT t.cprojectcode,
                           t.csxtypecode,
                           'M' AS year_month,
                           NVL (SUM (t.iyjbudget), 0) AS yjlxys
                      FROM t_hig_rzbudget t
                     WHERE     t.cstatus = 'Y'
                           AND t.iyear = EXTRACT (YEAR FROM v_date)
                           AND t.imonth = EXTRACT (MONTH FROM v_date)
                  GROUP BY t.cprojectcode, t.csxtypecode),
              nofmt
              AS (SELECT cyhcode AS cprojectcode,
                         cyhname AS cprojectname,
                         cxmjytz AS jytz,
                         iorder AS iorder,
                         cprojectname AS cprojectnamefmt,
                         cstatus AS cstatus,
                         cjbnlj,
                         cjbylj,
                         gdyjlxys,
                         gdljyjlx,
                         gdbnys,
                         gdbnsj,
                         gdbnc,
                         gdbyys,
                         gdbysj,
                         gdbyc,
                         kfyjlxys,
                         kfljyjlx,
                         kfbnys,
                         kfbnsj,
                         kfbnc,
                         kfbyys,
                         kfbysj,
                         kfbyc,
                         hjzjcblxzdtys,
                         hjljyjlx,
                         hjbnys,
                         hjbnsj,
                         hjbnc,
                         hjbyys,
                         hjbysj,
                         hjbyc
                    FROM t_hig_szproject
                  MODEL RETURN ALL ROWS
                     REFERENCE ref_jxje ON (SELECT * FROM yz_jxje)
                        DIMENSION BY (cprojectcode, csxtypecode, year_month)
                        MEASURES (jxje)
                     REFERENCE ref_yjlxys ON (SELECT * FROM yz_yjlxys)
                        DIMENSION BY (cprojectcode, csxtypecode, year_month)
                        MEASURES (yjlxys)
                     MAIN main_section
                     DIMENSION BY (cyhcode)
                     MEASURES (cyhname, cxmjytz, cprojectname, cstatus, iorder, 0 cjbnlj, 0 cjbylj, 0 gdljyjlx, 0 gdbnys, 0 gdbnsj, 0 gdbnc, 0 gdbyys, 0 gdbysj, 0 gdbyc, 0 kfljyjlx, 0 kfbnys, 0 kfbnsj, 0 kfbnc, 0 kfbyys, 0 kfbysj, 0 kfbyc, 0 gdyjlxys, 0 kfyjlxys, 0 hjzjcblxzdtys, 0 hjljyjlx, 0 hjbnys, 0 hjbnsj, 0 hjbnc, 0 hjbyys, 0 hjbysj, 0 hjbyc)
                      IGNORE NAV UNIQUE DIMENSION
                     RULES AUTOMATIC ORDER
                        (cjbnlj [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'CJ', 'Y'],                      --内部资金拆借利息 本年累计
                        cjbylj [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'CJ', 'M'],                       --内部资金拆借利息 本年累计
                        gdyjlxys [cyhcode] = 0,                                                       --股东 应计利息预算A' todo
                        gdljyjlx [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'GD', 'JD'],                --①股东投入应计利息 累计应计利息①
                        gdbnys [cyhcode] = ref_yjlxys.yjlxys[CV (cyhcode), 'GD', 'Y'],                    --本年        预算
                        gdbnsj [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'GD', 'Y'],                        --本年        实际
                        gdbnc [cyhcode] = NVL (gdbnys[CV (cyhcode)], 0) - NVL (gdbnsj[CV (cyhcode)], 0),   --本年        差
                        gdbyys [cyhcode] = ref_yjlxys.yjlxys[CV (cyhcode), 'GD', 'M'],                    --本月        预算
                        gdbysj [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'GD', 'M'],                        --本月        实际
                        gdbyc [cyhcode] = NVL (gdbyys[CV (cyhcode)], 0) - NVL (gdbysj[CV (cyhcode)], 0),   --本月        差
                        kfyjlxys [cyhcode] = 0,                                                       --开发 应计利息预算A' todo
                        kfljyjlx [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'KF', 'JD'], --②开发贷应计利息                            "累计应计利息②"
                        kfbnys [cyhcode] = ref_yjlxys.yjlxys[CV (cyhcode), 'KF', 'Y'],                    --本年        预算
                        kfbnsj [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'KF', 'Y'],                        --本年        实际
                        kfbnc [cyhcode] = NVL (kfbnys[CV (cyhcode)], 0) - NVL (kfbnsj[CV (cyhcode)], 0),   --本年        差
                        kfbyys [cyhcode] = ref_yjlxys.yjlxys[CV (cyhcode), 'KF', 'M'],                    --本月        预算
                        kfbysj [cyhcode] = ref_jxje.jxje[CV (cyhcode), 'KF', 'M'],                        --本月        实际
                        kfbyc [cyhcode] = NVL (kfbyys[CV (cyhcode)], 0) - NVL (kfbysj[CV (cyhcode)], 0),   --本月        差
                        hjzjcblxzdtys [cyhcode] = NVL (gdyjlxys[CV (cyhcode)], 0) + NVL (kfyjlxys[CV (cyhcode)], 0),
                        hjljyjlx [cyhcode] = NVL (gdljyjlx[CV (cyhcode)], 0) + NVL (kfljyjlx[CV (cyhcode)], 0), --累计应计利息C=①+②
                        hjbnys [cyhcode] = NVL (gdbnys[CV (cyhcode)], 0) + NVL (kfbnys[CV (cyhcode)], 0),         --本年预算
                        hjbnsj [cyhcode] = NVL (gdbnsj[CV (cyhcode)], 0) + NVL (kfbnsj[CV (cyhcode)], 0),         --本年实际
                        hjbnc [cyhcode] = NVL (gdbnc[CV (cyhcode)], 0) + NVL (kfbnc[CV (cyhcode)], 0),             --本年差
                        hjbyys [cyhcode] = NVL (gdbyys[CV (cyhcode)], 0) + NVL (kfbyys[CV (cyhcode)], 0),         --本月预算
                        hjbysj [cyhcode] = NVL (gdbysj[CV (cyhcode)], 0) + NVL (kfbysj[CV (cyhcode)], 0),         --本月实际
                        hjbyc [cyhcode] = NVL (gdbyc[CV (cyhcode)], 0) + NVL (kfbyc[CV (cyhcode)], 0)              --本月差
                                                                                                     ))
         SELECT cprojectcode,
                cprojectname,
                jytz,
                iorder,
                cprojectnamefmt,
                cstatus,
                cjbnlj,
                cjbylj,
                gdyjlxys,
                gdljyjlx,
                gdbnys,
                gdbnsj,
                gdbnc,
                gdbyys,
                gdbysj,
                gdbyc,
                kfyjlxys,
                kfljyjlx,
                kfbnys,
                kfbnsj,
                kfbnc,
                kfbyys,
                kfbysj,
                kfbyc,
                hjzjcblxzdtys,
                hjljyjlx,
                hjbnys,
                hjbnsj,
                hjbnc,
                hjbyys,
                hjbysj,
                hjbyc,
                v_date
           FROM nofmt t;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_qxmyjlxtz;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_QXMZJDKTZ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_qxmzjdktz (v_date IN DATE)                                                              --截止日期
   /*
   1.全项目融资台账

   yinbin

四种方式 1
   */
   IS
      --temp表的每行的类型
      t_qxmzjdktz   t_hig_borrow_qxmzjdktz_his%ROWTYPE;

      -- 游标 查询项目名称 todo 可能会根据业务进行修改
      CURSOR cur_szproject (cv_bflag NUMBER)                                                                     --合法的数据
      IS
         SELECT t.cyhcode,                                                                                        --项目编码
                t.cyhname,                                                                                        --项目名称
                t.cprojectname,                                                                              --格式化后的项目名称
                t.cxmjytz,                                                                                        --经营体长
                t.iorder,                                                                                           --排序
                t.cstatus                                                                                        --是否是项目
           FROM t_hig_szproject t
          WHERE t.bflag = cv_bflag;

      --本年   需要改为 sysdate   '2012-03-07'
      p_bennian     NUMBER := EXTRACT (YEAR FROM v_date);
      --本月   需要改为 sysdate
      p_benyue      NUMBER := EXTRACT (MONTH FROM v_date);
   -- 表类型   方便插入数据
   -- TYPE TYPE_QXMZJDKTZ IS TABLE OF T_HIG_BORROW_QXMZJDKTZ_HIS%ROWTYPE;
   BEGIN
      /*
      验证
      */
      IF v_date IS NULL
      THEN
         --    SYS.DBMS_OUTPUT.PUT_LINE('v_date不能为null');
         RETURN;
      END IF;

      /*
      循环每一个总项目
      */
      OPEN cur_szproject (0);

      IF cur_szproject%NOTFOUND
      THEN
         --    SYS.DBMS_OUTPUT.PUT_LINE('警告:根据您输入的参数无法查出任何数据!EXITED');
         RETURN;
      END IF;

      LOOP
         --取出 项目名称、经营体长
         FETCH cur_szproject
            INTO t_qxmzjdktz.cprojectcode,
                 t_qxmzjdktz.cprojectname,
                 t_qxmzjdktz.cprojectnamefmt,
                 t_qxmzjdktz.jytz,
                 t_qxmzjdktz.iorder,
                 t_qxmzjdktz.cstatus;

         EXIT WHEN cur_szproject%NOTFOUND;

         --贷款预算 说明:取项目全周期贷款预算,全周期即所有的,所以没有时间判断
         SELECT NVL (SUM (NVL (t.idkbudget, 0)), 0)
           INTO t_qxmzjdktz.dkys
           FROM t_hig_rzqzqbudget t
          WHERE t.cstatus = y AND t.cprojectcode = t_qxmzjdktz.cprojectcode;                                      --项目对应

         /**************************************************************************
         ****************************************
         1、股东借款
         ***************************************************************************
         ***************************************/
         ------------------------------------------------------------------------------------------------------------
         -- 年
         SELECT NVL (SUM (NVL (t.idkbudget, 0)), 0), NVL (SUM (NVL (t.ihkbudget, 0)), 0)
           INTO t_qxmzjdktz.gdbnysjk,                                                                           --本年预算借款
                                     t_qxmzjdktz.gdbnyshk                                                       --本年预算还款
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND t.iyear = p_bennian                                                                     --本年(预算创建日期)
                AND t.csxtypecode = zjsx.gd;

         --本年实际借款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.gdbnsjjk
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date (y, t.ddkbegindate, v_date) = 1
                AND t.csxtypecode = zjsx.gd;

         --本年实际还款
         SELECT NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO t_qxmzjdktz.gdbnsjhk
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date (y, t.dhkdate, v_date) = 1
                AND t.csxtypecode = zjsx.gd;

         --本年差借款
         t_qxmzjdktz.gdbncjk := (NVL (t_qxmzjdktz.gdbnysjk, 0) - NVL (t_qxmzjdktz.gdbnsjjk, 0));
         --本年差还款
         t_qxmzjdktz.gdbnchk := (NVL (t_qxmzjdktz.gdbnyshk, 0) - NVL (t_qxmzjdktz.gdbnsjhk, 0));

         ------------------------------------------------------------------------------------------------------------
         -- 月
         SELECT NVL (SUM (NVL (t.idkbudget, 0)), 0), NVL (SUM (NVL (t.ihkbudget, 0)), 0)
           INTO t_qxmzjdktz.gdbyysjk,                                                                           --本月预算借款
                                     t_qxmzjdktz.gdbyyshk                                                       --本月预算还款
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND t.iyear = p_bennian                                                                     --本年(预算创建日期)
                AND t.imonth = p_benyue                                                                             --本月
                AND t.csxtypecode = zjsx.gd;

         --本月实际借款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.gdbysjjk
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date ('M', t.ddkbegindate, v_date) = 1
                AND t.csxtypecode = zjsx.gd;                                                                          --

         -- 股东借款和开发贷款合计
         --本月实际还款
         SELECT NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO t_qxmzjdktz.gdbysjhk
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date ('M', t.dhkdate, v_date) = 1
                AND t.csxtypecode = zjsx.gd;                                                               --股东借款和开发贷款合计

         --本月差借款
         t_qxmzjdktz.gdbycjk := (NVL (t_qxmzjdktz.gdbnysjk, 0) - NVL (t_qxmzjdktz.gdbnsjjk, 0));
         --本月差还款
         t_qxmzjdktz.gdbychk := (NVL (t_qxmzjdktz.gdbnyshk, 0) - NVL (t_qxmzjdktz.gdbnsjhk, 0));
         ---年初余额 TODO 导入的固定数据,到项目/分期/到资金属性存储。可能需要在dk表中添加年初余额字段
         t_qxmzjdktz.gdncye := 200000;
         --        SELECT SUM(T.NCYE) INTO T_QXMZJDKTZ.GDNCYE FROM T_HIG_RZBUDGET T
         --        WHERE  T.
         ---期末余额
         /*年初余额+本年累计到当前月的贷款金额-本年累计到当前月的还款款金额*/
         t_qxmzjdktz.gdqmye :=
            NVL (t_qxmzjdktz.gdncye, 0) + NVL (t_qxmzjdktz.gdbnsjjk, 0) - NVL (t_qxmzjdktz.gdbnsjhk, 0);

         /**************************************************************************
         ****************************************
         2、开发贷款
         ***************************************************************************
         ***************************************/
         ------------------------------------------------------------------------------------------------------------
         -- 年
         SELECT NVL (SUM (NVL (t.idkbudget, 0)), 0), NVL (SUM (NVL (t.ihkbudget, 0)), 0)
           INTO t_qxmzjdktz.kfbnysjk,                                                                           --本年预算借款
                                     t_qxmzjdktz.kfbnyshk                                                       --本年预算还款
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND t.iyear = p_bennian                                                                     --本年(预算创建日期)
                AND t.csxtypecode = zjsx.kf;

         --本年实际借款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.kfbnsjjk
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date (y, t.ddkbegindate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;                                                                          --

         -- 股东借款和开发贷款合计
         --本年实际还款
         SELECT NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO t_qxmzjdktz.kfbnsjhk
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date (y, t.dhkdate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;                                                               --股东借款和开发贷款合计

         --本年差借款
         t_qxmzjdktz.kfbncjk := (NVL (t_qxmzjdktz.kfbnysjk, 0) - NVL (t_qxmzjdktz.kfbnsjjk, 0));
         --本年差还款
         t_qxmzjdktz.kfbnchk := (NVL (t_qxmzjdktz.kfbnyshk, 0) - NVL (t_qxmzjdktz.kfbnsjhk, 0));

         ------------------------------------------------------------------------------------------------------------
         -- 月
         SELECT NVL (SUM (NVL (t.idkbudget, 0)), 0), NVL (SUM (NVL (t.ihkbudget, 0)), 0)
           INTO t_qxmzjdktz.kfbyysjk,                                                                           --本月预算借款
                                     t_qxmzjdktz.kfbyyshk                                                       --本月预算还款
           FROM t_hig_rzbudget t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND t.iyear = p_bennian                                                                     --本年(预算创建日期)
                AND t.imonth = p_benyue                                                                             --本月
                AND t.csxtypecode = zjsx.kf;

         --本月实际借款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.kfbysjjk
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date ('M', t.ddkbegindate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;                                                               --股东借款和开发贷款合计

         --本月实际还款
         SELECT NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO t_qxmzjdktz.kfbysjhk
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date ('M', t.dhkdate, v_date) = 1
                AND t.csxtypecode = zjsx.kf;                                                               --股东借款和开发贷款合计

         --本月差借款
         t_qxmzjdktz.kfbycjk := (NVL (t_qxmzjdktz.kfbnysjk, 0) - NVL (t_qxmzjdktz.kfbnsjjk, 0));
         --本月差还款
         t_qxmzjdktz.kfbychk := (NVL (t_qxmzjdktz.kfbnyshk, 0) - NVL (t_qxmzjdktz.kfbnsjhk, 0));
         ---年初余额  TODO 导入的固定数据
         t_qxmzjdktz.kfncye := 100000;
         ---期末余额
         /*年初余额+本年累计到当前月的贷款金额-本年累计到当前月的还款款金额*/
         t_qxmzjdktz.kfqmye :=
            NVL (t_qxmzjdktz.kfncye, 0) + NVL (t_qxmzjdktz.kfbysjjk, 0) - NVL (t_qxmzjdktz.kfbysjhk, 0);

         /**************************************************************************
         ****************************************
         3、HIG内部资金拆借
         ***************************************************************************
         ***************************************/
         --本年累计借款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.nbbnljjk
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date (y, t.ddkbegindate, v_date) = 1                                                -- 本年(贷款起始日期)
                AND t.csxtypecode = zjsx.cj;                                                                 --HIG内部资金拆借

         --本年累计还款
         SELECT NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO t_qxmzjdktz.nbbnjhk
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date (y, t.dhkdate, v_date) = 1
                AND t.csxtypecode = zjsx.cj;                                                                 --HIG内部资金拆借

         --本月实际借款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.nbbysjjk
           FROM t_hig_borrow_dk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date ('M', t.ddkbegindate, v_date) = 1
                AND t.csxtypecode = zjsx.cj;                                                                          --

         -- HIG内部资金拆借
         --本月实际还款
         SELECT NVL (SUM (NVL (t.idkmoney, 0)), 0)
           INTO t_qxmzjdktz.nbbysjhk
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND t.cprojectcode = t_qxmzjdktz.cprojectcode                                                   --项目名称对应
                AND fn_date ('M', t.dhkdate, v_date) = 1
                AND t.csxtypecode = zjsx.cj;                                                                 --HIG内部资金拆借

         --年初余额  TODO 导入的固定数据
         t_qxmzjdktz.nbncye := 300000;
         --期末余额
         /*年初余额+本年累计到当前月的贷款金额-本年累计到当前月的还款款金额*/
         t_qxmzjdktz.nbqmye :=
            NVL (t_qxmzjdktz.nbncye, 0) + NVL (t_qxmzjdktz.nbbnljjk, 0) - NVL (t_qxmzjdktz.nbbnjhk, 0);
         /**************************************************************************
         ****************************************
         4、注册资金
         ***************************************************************************
         ***************************************/
         --注册资金  TODO 导入的固定数据
         t_qxmzjdktz.zczj := 76327685;
         /**************************************************************************
         ****************************************
         0、合计
         ***************************************************************************
         ***************************************/
         --年初余额
         t_qxmzjdktz.ncye := NVL (t_qxmzjdktz.gdncye, 0) + NVL (t_qxmzjdktz.kfncye, 0);
         --期末余额
         t_qxmzjdktz.qmye := NVL (t_qxmzjdktz.gdqmye, 0) + NVL (t_qxmzjdktz.kfqmye, 0);
         ------------------------------------------------------------------------------------------------------------
         -- 年
         --本年预算借款
         t_qxmzjdktz.bnysjk := NVL (t_qxmzjdktz.gdbnysjk, 0) + NVL (t_qxmzjdktz.kfbnysjk, 0);
         --本年预算还款
         t_qxmzjdktz.bnyshk := NVL (t_qxmzjdktz.gdbnyshk, 0) + NVL (t_qxmzjdktz.kfbnyshk, 0);
         --本年实际借款
         t_qxmzjdktz.bnsjjk := NVL (t_qxmzjdktz.gdbnsjjk, 0) + NVL (t_qxmzjdktz.kfbnsjjk, 0);
         --本年实际还款
         t_qxmzjdktz.bnsjhk := NVL (t_qxmzjdktz.gdbnsjhk, 0) + NVL (t_qxmzjdktz.kfbnsjhk, 0);
         --本年差借款
         t_qxmzjdktz.bncjk := NVL (t_qxmzjdktz.gdbncjk, 0) + NVL (t_qxmzjdktz.kfbncjk, 0);
         --本年差还款
         ------------------------------------------------------------------------------------------------------------
         -- 月
         t_qxmzjdktz.bnchk := NVL (t_qxmzjdktz.gdbnchk, 0) + NVL (t_qxmzjdktz.kfbnchk, 0);
         --本月预算借款
         t_qxmzjdktz.byysjk := NVL (t_qxmzjdktz.gdbyysjk, 0) + NVL (t_qxmzjdktz.kfbyysjk, 0);
         --本月预算还款
         t_qxmzjdktz.byyshk := NVL (t_qxmzjdktz.gdbyyshk, 0) + NVL (t_qxmzjdktz.kfbyyshk, 0);
         --本月实际借款
         t_qxmzjdktz.bysjjk := NVL (t_qxmzjdktz.gdbysjjk, 0) + NVL (t_qxmzjdktz.kfbysjjk, 0);
         --本月实际还款
         t_qxmzjdktz.bysjhk := NVL (t_qxmzjdktz.gdbysjhk, 0) + NVL (t_qxmzjdktz.kfbysjhk, 0);
         --本月差借款
         t_qxmzjdktz.bycjk := NVL (t_qxmzjdktz.gdbycjk, 0) + NVL (t_qxmzjdktz.kfbycjk, 0);
         --本月差还款
         t_qxmzjdktz.bychk := NVL (t_qxmzjdktz.gdbychk, 0) + NVL (t_qxmzjdktz.kfbychk, 0);

         /**************************************************************************
         ****************************************
         插入临时表
         ***************************************************************************
         ***************************************/
         INSERT INTO t_hig_borrow_qxmzjdktz_his (cprojectcode,
                                                 jytz,
                                                 dkys,
                                                 ncye,
                                                 bnysjk,
                                                 bnyshk,
                                                 bnsjjk,
                                                 bnsjhk,
                                                 bncjk,
                                                 bnchk,
                                                 byysjk,
                                                 byyshk,
                                                 bysjjk,
                                                 bysjhk,
                                                 bycjk,
                                                 bychk,
                                                 qmye,
                                                 gdncye,
                                                 gdbnysjk,
                                                 gdbnyshk,
                                                 gdbnsjjk,
                                                 gdbnsjhk,
                                                 gdbncjk,
                                                 gdbnchk,
                                                 gdbyysjk,
                                                 gdbyyshk,
                                                 gdbysjjk,
                                                 gdbysjhk,
                                                 gdbycjk,
                                                 gdbychk,
                                                 gdqmye,
                                                 kfncye,
                                                 kfbnysjk,
                                                 kfbnyshk,
                                                 kfbnsjjk,
                                                 kfbnsjhk,
                                                 kfbncjk,
                                                 kfbnchk,
                                                 kfbyysjk,
                                                 kfbyyshk,
                                                 kfbysjjk,
                                                 kfbysjhk,
                                                 kfbycjk,
                                                 kfbychk,
                                                 kfqmye,
                                                 nbncye,
                                                 nbbnljjk,
                                                 nbbnjhk,
                                                 nbbysjjk,
                                                 nbbysjhk,
                                                 nbqmye,
                                                 zczj,
                                                 cdate,
                                                 cprojectname,
                                                 cprojectnamefmt,
                                                 iorder,
                                                 cstatus)
              VALUES (t_qxmzjdktz.cprojectcode,
                      t_qxmzjdktz.jytz,
                      t_qxmzjdktz.dkys,
                      t_qxmzjdktz.ncye,
                      t_qxmzjdktz.bnysjk,
                      t_qxmzjdktz.bnyshk,
                      t_qxmzjdktz.bnsjjk,
                      t_qxmzjdktz.bnsjhk,
                      t_qxmzjdktz.bncjk,
                      t_qxmzjdktz.bnchk,
                      t_qxmzjdktz.byysjk,
                      t_qxmzjdktz.byyshk,
                      t_qxmzjdktz.bysjjk,
                      t_qxmzjdktz.bysjhk,
                      t_qxmzjdktz.bycjk,
                      t_qxmzjdktz.bychk,
                      t_qxmzjdktz.qmye,
                      t_qxmzjdktz.gdncye,
                      t_qxmzjdktz.gdbnysjk,
                      t_qxmzjdktz.gdbnyshk,
                      t_qxmzjdktz.gdbnsjjk,
                      t_qxmzjdktz.gdbnsjhk,
                      t_qxmzjdktz.gdbncjk,
                      t_qxmzjdktz.gdbnchk,
                      t_qxmzjdktz.gdbyysjk,
                      t_qxmzjdktz.gdbyyshk,
                      t_qxmzjdktz.gdbysjjk,
                      t_qxmzjdktz.gdbysjhk,
                      t_qxmzjdktz.gdbycjk,
                      t_qxmzjdktz.gdbychk,
                      t_qxmzjdktz.gdqmye,
                      t_qxmzjdktz.kfncye,
                      t_qxmzjdktz.kfbnysjk,
                      t_qxmzjdktz.kfbnyshk,
                      t_qxmzjdktz.kfbnsjjk,
                      t_qxmzjdktz.kfbnsjhk,
                      t_qxmzjdktz.kfbncjk,
                      t_qxmzjdktz.kfbnchk,
                      t_qxmzjdktz.kfbyysjk,
                      t_qxmzjdktz.kfbyyshk,
                      t_qxmzjdktz.kfbysjjk,
                      t_qxmzjdktz.kfbysjhk,
                      t_qxmzjdktz.kfbycjk,
                      t_qxmzjdktz.kfbychk,
                      t_qxmzjdktz.kfqmye,
                      t_qxmzjdktz.nbncye,
                      t_qxmzjdktz.nbbnljjk,
                      t_qxmzjdktz.nbbnjhk,
                      t_qxmzjdktz.nbbysjjk,
                      t_qxmzjdktz.nbbysjhk,
                      t_qxmzjdktz.nbqmye,
                      t_qxmzjdktz.zczj,
                      v_date,
                      t_qxmzjdktz.cprojectname,
                      t_qxmzjdktz.cprojectnamefmt,
                      t_qxmzjdktz.iorder,
                      t_qxmzjdktz.cstatus);
      END LOOP;

      CLOSE cur_szproject;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_qxmzjdktz;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMYFLXTZ_DK
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmyflxtz_dk (v_date IN DATE, v_cprojectcode IN VARCHAR2,                               --项目编码
                                                                                   v_cprojectname IN VARCHAR2     --项目名称
                                                                                                             )    --截止日期
   AS
   /*
   单项目应付利息台账-到单据
   YINBIN
   */
   BEGIN
      --
      INSERT INTO t_hig_borrow_dxmyflxtz_dk_his (dkdh,
                                                 fq,
                                                 zjsx,
                                                 zjly,
                                                 dkzje,
                                                 yingflx,
                                                 yiflx,
                                                 weiflx,
                                                 cprojectcode,
                                                 cprojectname,
                                                 iorder,
                                                 fqcode)
         WITH dk
              AS (SELECT s.cprojectcode,                                                                          --项目编码
                         s.cprojectname,                                                                          --项目名称
                         s.cdocument,                                                                             --贷款单号
                         f.cinstallmentname,                                                                      --分期名称
                         s.csxtypecode,                                                                         --资金属性编码
                         s.csxtypename,                                                                           --资金属性
                         s.czjfroms,                                                                              --资金来源
                         s.idkmoney,                                                                             --贷款总金额
                         f.iorder,                                                                                --分期排序
                         f.cinstallmentcode                                                                       --分期编码
                    FROM t_hig_borrow_dk s LEFT JOIN t_hig_szinstallment f ON s.cinstallmentcode = f.cinstallmentcode
                   WHERE s.cstatus = y AND s.csxtypecode IN (zjsx.gd, zjsx.kf)                            --仅仅查询股东投入和开发贷
                                                                              ),
              jx
              AS                                                                                        --股东投入  取应计利息 合计
                (  SELECT j.cdkdocument,       --            DECODE(J.CINSTALLMENTCODE,ZJSX.GD,NVL(MIN(SUM(J.IYJMONEY)),
                                         -- 0),ZJSX.KF,NVL(MIN(SUM(J.IYFMONEY)
                                         -- ),0),0) AS YINGFLX   --改成计息单 应计利息
                                         --            MIN(CASE WHEN  J.CINSTALLMENTCODE = ZJSX.GD THEN
                                         --                NVL(SUM(J.IYJMONEY),0)
                                         --            ELSE--IF  J.CINSTALLMENTCODE = ZJSX.KF WHEN THEN
                                         --                NVL(SUM(J.IYFMONEY),0)
                                         --            END) AS YINGFLX --改成计息单 应计利息
                                         NVL (SUM (j.iyjmoney), 0) AS yingjlx,                              --改成计息单 应计利息
                                                                              NVL (SUM (j.iyfmoney), 0) AS yingflx --改成计息单 应付利息
                     FROM t_hig_borrow_jx j
                    WHERE j.cstatus = y
                 GROUP BY j.cdkdocument),
              hx
              AS (  SELECT h.cdkdocument,
                           NVL (SUM (h.ihxmoney), 0) AS yiflx_kf,                         --本次付息金额 (kf)  ,gd 本次还息金额-应计利息
                           NVL (SUM (h.ihxmoney - h.iyjmoney), 0) AS yiflx_gd                            --gd本次付息金额-应计利息
                      FROM t_hig_borrow_hx h
                     WHERE h.cstatus = y
                  GROUP BY h.cdkdocument),
              res
              AS (SELECT d.cprojectcode AS cprojectcode,                                                          --项目编码
                         d.cprojectname AS cprojectname,                                                          --项目名称
                         d.cdocument AS dkdh,                                                                     --贷款单号
                         d.cinstallmentname AS fq,                                                                --分期名称
                         d.csxtypename AS zjsx,                                                                   --资金属性
                         d.czjfroms AS zjly,                                                                      --资金来源
                         d.idkmoney AS dkzje,                                                                    --贷款总金额
                         d.iorder AS iorder,                                                                      --分期排序
                         DECODE (d.csxtypecode,  zjsx.gd, j.yingjlx,  zjsx.kf, j.yingflx,  0) AS yingflx,
                         --应付利息
                         DECODE (d.csxtypecode,  zjsx.gd, h.yiflx_gd,  zjsx.kf, h.yiflx_kf,  0) AS yiflx,
                         --已付利息
                         (  NVL (DECODE (d.csxtypecode,  zjsx.gd, j.yingjlx,  zjsx.kf, j.yingflx,  0), 0)
                          - NVL (DECODE (d.csxtypecode,  zjsx.gd, h.yiflx_gd,  zjsx.kf, h.yiflx_kf,  0), 0))
                            AS weiflx,                                                                            --未付利息
                         d.cinstallmentcode AS fqcode                                                             --分期编码
                    FROM dk d
                         LEFT JOIN jx j ON d.cdocument = j.cdkdocument
                         LEFT JOIN hx h ON d.cdocument = h.cdkdocument),
              heji
              AS (  SELECT r.cprojectcode AS cprojectcode,                                                        --项目编码
                           r.cprojectname AS cprojectname,                                                        --项目名称
                           heji_name AS dkdh,                                                                     --贷款单号
                           NULL AS fq,                                                                            --分期名称
                           NULL AS zjsx,                                                                          --资金属性
                           NULL AS zjly,                                                                          --资金来源
                           SUM (r.dkzje) AS dkzje,                                                               --贷款总金额
                           1 AS iorder,                                                                           --分期排序
                           SUM (NVL (r.yingflx, 0)) AS yingflx,                                                   --应付利息
                           SUM (NVL (r.yiflx, 0)) AS yiflx,                                                       --已付利息
                           SUM (NVL (r.weiflx, 0)) AS weiflx,                                                     --未付利息
                           NULL AS fqcode                                                                         --分期编码
                      FROM res r
                  GROUP BY r.cprojectcode, r.cprojectname /*
                                                          --如果看到这里的group by 多出一些列,请删除
                                                          GROUP BY R.CPROJECTCODE, R.CPROJECTNAME
                                                          */
                                                         )
         SELECT dkdh,
                fq,
                zjsx,
                zjly,
                dkzje,
                yingflx,
                yiflx,
                weiflx,
                cprojectcode,
                cprojectname,
                iorder,
                fqcode
           FROM res
         UNION ALL
         SELECT dkdh,
                fq,
                zjsx,
                zjly,
                dkzje,
                yingflx,
                yiflx,
                weiflx,
                cprojectcode,
                cprojectname,
                iorder,
                fqcode
           FROM heji;

      --
      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmyflxtz_dk;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMYJLXTZ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmyjlxtz (v_cprojectcode IN VARCHAR2,                                                  --项目编码
                                                                v_cprojectname IN VARCHAR2,                       --项目名称
                                                                                           v_date IN DATE)        --截止日期
   AS
      /*
      单项目应计利息台账
      YINBIN
      */
      --本年   需要改为 sysdate   '2012-03-07'
      p_bennian     NUMBER := EXTRACT (YEAR FROM v_date);
      --本月   需要改为 sysdate
      p_benyue      NUMBER := EXTRACT (MONTH FROM v_date);
      --ROW类型
      t_dxmyjlxtz   t_hig_borrow_dxmyjlxtz_his%ROWTYPE;

      --游标  循环贷款单主表
      CURSOR cur_dk (
         cv_cprojectcode    VARCHAR2,
         cv_cprojectname    VARCHAR2,
         cv_date            DATE)
      IS
         SELECT t.cdocument,                                                                                      --贷款单号
                t.cinstallmentname,                                                                               --分期名称
                t.csxtypename,                                                                                    --资金属性
                t.czjfroms,                                                                                       --资金来源
                NVL (t.idkmoney, 0),                                                                             --贷款总金额
                --      只有股东借款和开发贷款,才可以有应付利率和应计利率
                NVL (t.iyfrate, 0),                                                                               --应付利率
                NVL (t.iyjrate, 0),                                                                               --应计利率
                t.ddkbegindate,                                                                                    --贷款日
                t.dhkdate,                                                                                         --还款日
                f.iorder                                                                                            --排序
           FROM t_hig_borrow_dk t                                                                                 --贷款单表
                LEFT JOIN t_hig_szinstallment f                                                                  --分期字典表
                                               ON f.cinstallmentname = t.cinstallmentname                           --分期
                LEFT JOIN t_hig_szproject s ON s.cyhcode = t.cprojectcode
          WHERE     t.cstatus = y
                AND s.byzflag = 0                                                                      --haier要求只计算这部分数据
                AND t.ddkbegindate <= cv_date                                                                -- 截止到 贷款日期
                AND fn_date ('JD', t.ddkbegindate, cv_date) = 1
                AND (t.cprojectcode = cv_cprojectcode OR t.cprojectname = cv_cprojectname);

      FUNCTION ljyjlx
         RETURN NUMBER
      IS
         tmpvar   NUMBER;
      /******************************************************************************
         累计应计利息
       ******************************************************************************/
      BEGIN
         tmpvar := 0;

         SELECT NVL (SUM (NVL (iyjmoney, 0)), 0)
           INTO tmpvar                                                                                          --累计应计利息
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND fn_date ('JD', t.djxenddate, v_date) = 1
                AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname)
                AND t.cdkdocument = t_dxmyjlxtz.cdkdocument                                                       --贷款单号
                AND t.csxtypecode <> zjsx.cj;                                                                --资金属性:内部拆借

         RETURN tmpvar;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            RAISE;
      END ljyjlx;

      FUNCTION dkye
         RETURN NUMBER
      IS
         tmpvar   NUMBER;
      /******************************************************************************
        贷款余额
      ******************************************************************************/
      BEGIN
         tmpvar := 0;

         SELECT t_dxmyjlxtz.idkmoney - NVL (SUM (NVL (t.ihkmoney, 0)), 0)
           INTO tmpvar                                                                                --贷款余额(还款单未还金额的合计)
           FROM t_hig_borrow_hk t
          WHERE     t.cstatus = y
                AND fn_date ('JD', t.dhkdate, v_date) = 1
                AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname)
                AND t.cdkdocument = t_dxmyjlxtz.cdkdocument;                                                          --

         RETURN tmpvar;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            -- Consider logging the error and then re-raise
            RAISE;
      END dkye;

      FUNCTION bnljyjlx
         RETURN NUMBER
      IS
         tmpvar   NUMBER;
      /******************************************************************************
          本年累计应计利息
      ******************************************************************************/
      BEGIN
         tmpvar := 0;

         SELECT NVL (SUM (NVL (iyjmoney, 0)), 0)
           INTO tmpvar                                                                                        --本年累计应计利息
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND fn_date (y, t.djxenddate, v_date) = 1
                AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname)
                AND t.cdkdocument = t_dxmyjlxtz.cdkdocument                                                       --贷款单号
                AND t.csxtypecode <> zjsx.cj;                                                                --资金属性:内部拆借

         RETURN tmpvar;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            -- Consider logging the error and then re-raise
            RAISE;
      END bnljyjlx;

      FUNCTION byyjlx
         RETURN NUMBER
      IS
         tmpvar   NUMBER;
      /******************************************************************************
          本月应计利息
      ******************************************************************************/
      BEGIN
         tmpvar := 0;

         SELECT NVL (SUM (NVL (iyjmoney, 0)), 0)
           INTO tmpvar                                                                                          --本月应计利息
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND fn_date ('M', t.djxenddate, v_date) = 1
                AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname)
                AND t.cdkdocument = t_dxmyjlxtz.cdkdocument                                                      --贷款单号;
                AND t.csxtypecode <> zjsx.cj;                                                                --资金属性:内部拆借

         RETURN tmpvar;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            RAISE;
      END byyjlx;

      FUNCTION bnljcjlx
         RETURN NUMBER
      IS
         tmpvar   NUMBER;
      /******************************************************************************
          本年累计内部拆借利息
      ******************************************************************************/
      BEGIN
         tmpvar := 0;

         SELECT NVL (SUM (NVL (iyjmoney, 0)), 0)
           INTO tmpvar                                                                                      --本年累计内部拆借利息
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND fn_date (y, t.djxenddate, v_date) = 1
                AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname)
                AND t.cdkdocument = t_dxmyjlxtz.cdkdocument                                                       --贷款单号
                AND t.csxtypecode = zjsx.cj;                                                                 --资金属性:内部拆借

         RETURN tmpvar;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            RAISE;
      END bnljcjlx;

      FUNCTION bycjlx
         RETURN NUMBER
      IS
         tmpvar   NUMBER;
      /******************************************************************************
          本月内部拆借利息
      ******************************************************************************/
      BEGIN
         tmpvar := 0;

         SELECT NVL (SUM (NVL (iyjmoney, 0)), 0)
           INTO tmpvar                                                                                        --本月内部拆借利息
           FROM t_hig_borrow_jx t
          WHERE     t.cstatus = y
                AND fn_date ('M', t.djxenddate, v_date) = 1
                AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname)
                AND t.cdkdocument = t_dxmyjlxtz.cdkdocument                                                       --贷款单号
                AND t.csxtypecode = zjsx.cj;                                                                 --资金属性:内部拆借

         RETURN tmpvar;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            RAISE;
      END bycjlx;

      PROCEDURE insert_data
      IS
      /******************************************************************************
        插入数据
      ******************************************************************************/
      BEGIN
         INSERT INTO t_hig_borrow_dxmyjlxtz_his (cdkdocument,
                                                 cinstallmentname,
                                                 csxtypename,
                                                 czjfroms,
                                                 idkmoney,
                                                 inothkmoney,
                                                 iyfrate,
                                                 iyjrate,
                                                 ddkbegindate,
                                                 dhkdate,
                                                 ijxmoney,
                                                 bnijxmoney,
                                                 byijxmoney,
                                                 bnijxmoneycj,
                                                 byijxmoneycj,
                                                 cdate,
                                                 cprojectcode,
                                                 cprojectname,
                                                 iorder)
              VALUES (t_dxmyjlxtz.cdkdocument,
                      t_dxmyjlxtz.cinstallmentname,
                      t_dxmyjlxtz.csxtypename,
                      t_dxmyjlxtz.czjfroms,
                      t_dxmyjlxtz.idkmoney,
                      t_dxmyjlxtz.inothkmoney,
                      t_dxmyjlxtz.iyfrate,
                      t_dxmyjlxtz.iyjrate,
                      t_dxmyjlxtz.ddkbegindate,
                      t_dxmyjlxtz.dhkdate,
                      t_dxmyjlxtz.ijxmoney,
                      t_dxmyjlxtz.bnijxmoney,
                      t_dxmyjlxtz.byijxmoney,
                      t_dxmyjlxtz.bnijxmoneycj,
                      t_dxmyjlxtz.byijxmoneycj,
                      v_date,
                      CASE
                         WHEN v_cprojectcode IS NULL
                         THEN
                            (SELECT t.cprojectcode
                               FROM t_hig_borrow_dk t
                              WHERE t.cprojectname = v_cprojectname)
                         ELSE
                            v_cprojectcode
                      END,                                                                                            --
                      CASE
                         WHEN v_cprojectname IS NULL
                         THEN
                            (SELECT cprojectname
                               FROM t_hig_borrow_dk t
                              WHERE t.cprojectcode = v_cprojectcode)
                         ELSE
                            v_cprojectname
                      END,                                                                                            --
                      t_dxmyjlxtz.iorder);
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            RAISE;
      END insert_data;

      PROCEDURE insert_heji
      IS
      /******************************************************************************
        插入合计
      ******************************************************************************/
      BEGIN
         INSERT INTO t_hig_borrow_dxmyjlxtz_his t (cdkdocument,
                                                   idkmoney,
                                                   inothkmoney,
                                                   iyfrate,
                                                   iyjrate,
                                                   ijxmoney,
                                                   bnijxmoney,
                                                   byijxmoney,
                                                   bnijxmoneycj,
                                                   byijxmoneycj,
                                                   cdate,
                                                   cprojectcode,
                                                   cprojectname,
                                                   iorder)
            SELECT heji_code,
                   SUM (s.idkmoney),
                   SUM (s.inothkmoney),
                   SUM (s.iyfrate),
                   SUM (s.iyjrate),
                   SUM (s.ijxmoney),
                   SUM (s.bnijxmoney),
                   SUM (s.byijxmoney),
                   SUM (bnijxmoneycj),
                   SUM (s.byijxmoneycj),
                   v_date,
                   v_cprojectcode,
                   v_cprojectname,
                   1
              FROM t_hig_borrow_dxmyjlxtz_his s                                                                   --报表 表
             WHERE s.cdate = v_date                                                                          --合计此次查询的数据
                                   AND (s.cprojectcode = v_cprojectcode OR s.cprojectname = v_cprojectname); --统计此项目下的所有单据,在当前时间点
      /*
      如果看到这里多出 group by 请删除,谢谢
      */
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            NULL;
         WHEN OTHERS
         THEN
            -- Consider logging the error and then re-raise
            RAISE;
      END insert_heji;

   BEGIN
      --循环每个贷款单
      OPEN cur_dk (v_cprojectcode, v_cprojectname, v_date);

      IF cur_dk%NOTFOUND
      THEN
         --    SYS.DBMS_OUTPUT.PUT_LINE('WARN:根据您输入的参数无法查出任何数据!EXITED') ;
         RETURN;
      END IF;

      LOOP
         FETCH cur_dk
            INTO t_dxmyjlxtz.cdkdocument,                                                                         --贷款单号
                 t_dxmyjlxtz.cinstallmentname,                                                                      --分期
                 t_dxmyjlxtz.csxtypename,                                                                         --资金属性
                 t_dxmyjlxtz.czjfroms,                                                                            --资金来源
                 t_dxmyjlxtz.idkmoney,                                                                            --贷款金额
                 t_dxmyjlxtz.iyfrate,                                                                             --应付利率
                 t_dxmyjlxtz.iyjrate,                                                                             --应计利率
                 t_dxmyjlxtz.ddkbegindate,                                                                         --贷款日
                 t_dxmyjlxtz.dhkdate,                                                                              --还款日
                 t_dxmyjlxtz.iorder;                                                                                --排序

         EXIT WHEN cur_dk%NOTFOUND;

         /*
         应计利率和应付利率
         资金属性:开发贷才分应付和应计
         此行sql报错不应该不应该影响程序的继续执行
         */
         ---------------------------------------------------------------------------------------------------------
         --贷款余额
         t_dxmyjlxtz.idkmoney := dkye ();

         --累计应计利息
         t_dxmyjlxtz.ijxmoney := ljyjlx ();

         --本年累计应计利息
         t_dxmyjlxtz.bnijxmoney := bnljyjlx ();

         --本月应计利息
         t_dxmyjlxtz.byijxmoney := byyjlx ();

         --本年累计内部拆借利息
         t_dxmyjlxtz.bnijxmoneycj := bnljcjlx ();

         --本月内部拆借利息
         t_dxmyjlxtz.byijxmoneycj := bycjlx ();

         -- 插入数据
         insert_data ();
      END LOOP;

      CLOSE cur_dk;

      -- 合计
      insert_heji ();

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmyjlxtz;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMYFLXTZ_FQ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmyflxtz_fq (v_date IN DATE, v_cprojectcode IN VARCHAR2,                               --项目编码
                                                                                   v_cprojectname IN VARCHAR2     --项目名称
                                                                                                             )    --截止日期
   AS
   /*
   单项目应付利息台账-到分期

   YINBIN

四种方式 2
   */
   BEGIN
      --插入数据
      INSERT INTO t_hig_borrow_dxmyflxtz_fq_his t (fq,
                                                   cdate,
                                                   cprojectcode,
                                                   cprojectname,
                                                   iorder,
                                                   fqcode)
           SELECT s.cinstallmentname,                                                                               --分期
                  v_date,                                                                                         --截止日期
                  s.cprojectcode,                                                                            --查询条件,项目编码
                  s.cprojectname,                                                                            --查询条件,项目名称
                  f.iorder,
                  f.cinstallmentcode                                                                         -- 后来添加分期编码
             FROM t_hig_borrow_dk s LEFT JOIN t_hig_szinstallment f ON s.cinstallmentcode = f.cinstallmentcode
            WHERE s.cstatus = y AND s.csxtypecode IN (zjsx.gd, zjsx.kf)                                   --仅仅查询股东投入和开发贷
         GROUP BY s.cinstallmentname,                                                                               --分期
                  s.cprojectcode,                                                                            --查询条件,项目编码
                  s.cprojectname,                                                                            --查询条件,项目名称
                  f.iorder,
                  f.cinstallmentcode;                                                                       -- 后来添加分期编码;

      --更新查询字段
      UPDATE t_hig_borrow_dxmyflxtz_fq_his t
         SET                                                --      --------------------------------------------------累计
            ljyfgdtr =                                                                                         --应付股东投入⑤
                (SELECT SUM (j.iyfmoney)                                          --取从项目开始至当前日股东投入应付利息实际数 TODO 现在取的是应付利息
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cinstallmentcode = t.fqcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.gd
                        AND fn_date ('JD', j.djxenddate, v_date) = 1),
             ljyfgdtrlx =                                                                                    --已付股东投入利息②
                (SELECT SUM (h.ihxmoney - h.iyjmoney)                                   --取从项目开始至当前日开发贷还息单中(本次付息金额-应计利息)
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cinstallmentcode = t.fqcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date ('JD', h.dhxdate, v_date) = 1),
             ljyfkfd =                                                                                           --应付开发贷
                (SELECT SUM (j.iyjmoney)                                                          --取从项目开始至当前日开发贷应计利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cinstallmentcode = t.fqcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.kf
                        AND fn_date ('JD', j.djxenddate, v_date) = 1),
             ljyfkfdlx =                                                                                      --已付开发贷利息③
                (SELECT SUM (h.iyjmoney)                                                      --取从项目开始至当前日开发贷还息单中应计利息实际数
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cinstallmentcode = t.fqcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date ('JD', h.dhxdate, v_date) = 1),
             --      --------------------------------------------------本年
             bnyfgdtr                                                                                          --应付股东投入⑤
                      =
                (SELECT SUM (j.iyjmoney)                                                         --取从项目开始至当前日股东投入应付利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cinstallmentcode = t.fqcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.gd
                        AND fn_date (y, j.djxenddate, v_date) = 1),
             bnyfgdtrlx                                                                                      --已付股东投入利息②
                        =
                (SELECT SUM (h.ihxmoney - h.iyjmoney)                                   --取从项目开始至当前日开发贷还息单中(本次付息金额-应计利息)
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cinstallmentcode = t.fqcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date (y, h.dhxdate, v_date) = 1),
             bnyfkfd                                                                                             --应付开发贷
                     =
                (SELECT SUM (j.iyjmoney)                                                          --取从项目开始至当前日开发贷应计利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cinstallmentcode = t.fqcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.kf
                        AND fn_date (y, j.djxenddate, v_date) = 1),
             bnyfkfdlx                                                                                        --已付开发贷利息③
                       =
                (SELECT SUM (h.iyjmoney)                                                      --取从项目开始至当前日开发贷还息单中应计利息实际数
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cinstallmentcode = t.fqcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date (y, h.dhxdate, v_date) = 1),
             --      --------------------------------------------------本月
             byyfgdtr                                                                                          --应付股东投入⑤
                      =
                (SELECT SUM (j.iyjmoney)                                                         --取从项目开始至当前日股东投入应付利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cinstallmentcode = t.fqcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.gd
                        AND fn_date ('M', j.djxenddate, v_date) = 1),
             byyfgdtrlx                                                                                      --已付股东投入利息②
                        =
                (SELECT SUM (h.ihxmoney - h.iyjmoney)                                   --取从项目开始至当前日开发贷还息单中(本次付息金额-应计利息)
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cinstallmentcode = t.fqcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date ('M', h.dhxdate, v_date) = 1),
             byyfkfd                                                                                             --应付开发贷
                     =
                (SELECT SUM (j.iyjmoney)                                                          --取从项目开始至当前日开发贷应计利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cinstallmentcode = t.fqcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.kf
                        AND fn_date ('M', j.djxenddate, v_date) = 1),
             byyfkfdlx                                                                                        --已付开发贷利息③
                       =
                (SELECT SUM (h.iyjmoney)                                                      --取从项目开始至当前日开发贷还息单中应计利息实际数
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cinstallmentcode = t.fqcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date ('M', h.dhxdate, v_date) = 1)
       WHERE t.cdate = v_date;

      --更新计算字段
      -- 更新 计算字段
      UPDATE t_hig_borrow_dxmyflxtz_fq_his t
         SET                                                        --------------------------------------------------累计
            ljzf = NVL (ljyfgdtrlx, 0) + NVL (ljyfkfdlx, 0),                                                 --累计支付①=②+③
             ljwfgdtr = NVL (ljyfgdtr, 0) - NVL (ljyfgdtrlx, 0),                                           --未付股东投入④=⑤-②
             --------------------------------------------------本年
             bnljzf = NVL (bnyfgdtrlx, 0) + NVL (bnyfkfdlx, 0),                                                 --本年累计支付
             bnwfgdtr = NVL (bnyfgdtr, 0) - NVL (bnyfgdtrlx, 0),                                                --未付股东投入
             --------------------------------------------------本月
             bywfgdtr = NVL (byyfgdtr, 0) - NVL (byyfgdtrlx, 0)                                                 --本月股东投入
       WHERE t.cdate = v_date;

      --分组合计插入
      INSERT INTO t_hig_borrow_dxmyflxtz_fq_his t (fq,
                                                   ljzf,
                                                   ljyfgdtr,
                                                   ljyfgdtrlx,
                                                   ljwfgdtr,
                                                   ljyfkfd,
                                                   ljyfkfdlx,
                                                   bnljzf,
                                                   bnyfgdtr,
                                                   bnyfgdtrlx,
                                                   bnwfgdtr,
                                                   bnyfkfd,
                                                   bnyfkfdlx,
                                                   byyfgdtr,
                                                   byyfgdtrlx,
                                                   bywfgdtr,
                                                   byyfkfd,
                                                   byyfkfdlx,
                                                   cdate,
                                                   cprojectcode,
                                                   cprojectname,
                                                   iorder,
                                                   fqcode)
           SELECT heji_name,                                                                                          --
                  SUM (ljzf),
                  SUM (ljyfgdtr),
                  SUM (ljyfgdtrlx),
                  SUM (ljwfgdtr),
                  SUM (ljyfkfd),
                  SUM (ljyfkfdlx),
                  SUM (bnljzf),
                  SUM (bnyfgdtr),
                  SUM (bnyfgdtrlx),
                  SUM (bnwfgdtr),
                  SUM (bnyfkfd),
                  SUM (bnyfkfdlx),
                  SUM (byyfgdtr),
                  SUM (byyfgdtrlx),
                  SUM (bywfgdtr),
                  SUM (byyfkfd),
                  SUM (byyfkfdlx),
                  cdate,
                  cprojectcode,
                  cprojectname,
                  1,
                  heji_code
             FROM t_hig_borrow_dxmyflxtz_fq_his s
            WHERE s.cdate = v_date
         GROUP BY s.cdate, s.cprojectcode, s.cprojectname;

      /*
      --如果看到这里的group by 多出一些列,请删除
      S.CDATE,S.CPROJECTCODE,S.CPROJECTNAME;
      */
      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmyflxtz_fq;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMYZLXTZ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmyzlxtz (v_cprojectcode IN VARCHAR2,                                                  --项目编码
                                                                v_cprojectname IN VARCHAR2,                       --项目名称
                                                                                           v_cdate IN DATE        --截止日期
                                                                                                          )
   AS
      /*
      3.单生命周期应转利息台账
      YINBIN
      */
      p_num   NUMBER;
   BEGIN
      SELECT COUNT (*)
        INTO p_num
        FROM t_hig_rzqzqbudget t
       WHERE t.cstatus = y AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname);

      IF p_num <= 0
      THEN
         --    DBMS_OUTPUT.PUT_LINE('没有找到对应的预算,不再继续计算,项目名称是:'||V_CPROJECTNAME);
         RETURN;
      END IF;

      /*
      插入主数据
      */
      INSERT INTO t_hig_borrow_dxmyzlxtz_his t (cinstallmentname,
                                                cprojectcode,
                                                cprojectname,
                                                cdate,
                                                iorder)
         SELECT t.cinstallmentname,                                                                                 --分期
                s.cyhcode,                                                                                        --项目编码
                s.cyhname,                                                                                        --项目名称
                v_cdate,                                                                                          --截止日期
                f.iorder                                                                                          --分期排序
           FROM t_hig_rzqzqbudget t
                LEFT JOIN t_hig_szinstallment f ON f.cinstallmentcode = t.cinstallmentcode
                LEFT JOIN t_hig_szproject s ON (s.cyhcode = t.cprojectcode OR s.cyhname = t.cprojectname)
          WHERE t.cstatus = y AND (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname);

      -- ORDER BY T.CLASTUSERNAME; --TODO:不能查询dk和预算表,因为这些表可能不会包含所有项目?
      /*
      更新 需要额外查询的字段
      */
      UPDATE t_hig_borrow_dxmyzlxtz_his t
         --
         --------------------------------------------------------------------------------------------------------
         -- 1.E2E资金成本动态预算
         SET (idkbudget,
              irate,
              itime,
              zbhlxze,
              iarea,
              --2.已结转资本化利息
              ijzarea,
              iqyarea                                                                                            --已签约面积
                     ) =
                (SELECT NVL (y.idkbudget, 0),                                                                     --贷款预算
                        NVL (y.irate, 0),                                                                           --利率
                        NVL (y.itime, 0),                                                                           --周期
                        NVL (y.idkbudget, 0) * NVL (y.irate, 0) * NVL (y.itime, 0),                   --E2E资本化利息总额A 贷款预算
                        -- *利率*周期
                        NVL (y.iarea, 0),                                                                        --总可售面积
                        NVL (y.ijzarea, 0),                                                                  --   已结转面积②
                        NVL (y.iqyarea, 0)                                                                       --已签约面积
                   FROM t_hig_rzqzqbudget y
                  WHERE     y.cstatus = y
                        AND (y.cprojectname = t.cprojectname OR y.cprojectcode = t.cprojectcode)                  --项目匹配
                        AND y.cinstallmentname = t.cinstallmentname                                                 --分期
                                                                   --            AND FN_DATE('JD',Y.DCREATEDATE,V_CDATE)=1
                ),
             --
             --------------------------------------------------------------------------------------------------------
             -- 3.实际应计利息 C
             iyjmoney =
                (SELECT NVL (SUM (j.iyjmoney), 0)                                                    --取项目累计到当前月的实际应计利息数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cstatus = y
                        AND j.csxtypecode IN (zjsx.gd, zjsx.kf)                                          --仅仅计算股东贷款和开发贷款
                        AND (j.cprojectname = t.cprojectname OR j.cprojectcode = t.cprojectcode)                  --项目匹配
                        AND j.cinstallmentname = t.cinstallmentname                                                 --分期
                        AND fn_date ('JM', j.djxenddate, v_cdate) = 1)
       WHERE (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname) AND cdate = v_cdate;            --分期排序

      /*
      */
      UPDATE t_hig_borrow_dxmyzlxtz_his t
         SET                                                                                                          --
             --------------------------------------------------------------------------------------------------------
             -- 4.计算字段
             dpmzicb = CASE WHEN iarea = 0 THEN 0 ELSE zbhlxze / iarea END --单㎡资金成本① todo   SET T.DPMZICB =(T.ZBHLXZE/T.IAREA),
       WHERE (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname) AND cdate = v_cdate;            --分期排序

      /*
      更新计算字段1
      */
      UPDATE t_hig_borrow_dxmyzlxtz_his t
         SET yjzzbhlx = (NVL (dpmzicb, 0) * NVL (ijzarea, 0)),                                           --已结转资本化利息B=①*②
                                                              yqyzbhlx = (NVL (dpmzicb, 0) * NVL (iqyarea, 0)) --已签约资本化利息D=①*3
       WHERE (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname) AND cdate = v_cdate;            --分期排序

      /*
      更新计算字段2
      */
      UPDATE t_hig_borrow_dxmyzlxtz_his t
         SET wjzzbhlx = (NVL (zbhlxze, 0) - NVL (yjzzbhlx, 0)),                                               --未结转资本化利息
             wqyzbhlx = (NVL (zbhlxze, 0) - NVL (yqyzbhlx, 0)),                                               --未签约资本化利息
             iorder =
                (SELECT f.iorder
                   FROM t_hig_szinstallment f
                  WHERE f.cinstallmentname = t.cinstallmentname)
       WHERE (t.cprojectcode = v_cprojectcode OR t.cprojectname = v_cprojectname) AND cdate = v_cdate;            --分期排序

      /*
      分组合计
      */
      /*
      下面的合计列 相乘数测试:
      SELECT
      T.CINSTALLMENTNAME  AS 分期,
      T.DPMZICB           AS 单平米资金成本,
      T.IJZAREA           AS 已结转面积,
      T.DPMZICB*T.IJZAREA AS 已结转资本化利息2,
      T.YJZZBHLX          AS 已结转资本化利息,
      T.IQYAREA           AS 已签约面积,
      T.DPMZICB*T.IQYAREA AS 已签约资本化利息2,
      T.YQYZBHLX          AS 已签约资本化利息
      FROM
      T_HIG_BORROW_DXMYZLXTZ_HIS T
      WHERE
      T.YJZZBHLX <> (T.DPMZICB*T.IJZAREA)
      OR T.YQYZBHLX <> (T.DPMZICB*T.IQYAREA);
      */
      /*
      是下面sql相减数的测试脚本
      SELECT
      *
      FROM
      T_HIG_BORROW_DXMYZLXTZ_HIS T
      WHERE
      T.WJZZBHLX <>(T.ZBHLXZE-T.YJZZBHLX)
      OR T.WQYZBHLX <>(T.ZBHLXZE-T.YQYZBHLX)
      */
      INSERT INTO t_hig_borrow_dxmyzlxtz_his t (cinstallmentname,
                                                idkbudget,
                                                irate,
                                                itime,
                                                zbhlxze,
                                                dpmzicb,
                                                iarea,
                                                ijzarea,
                                                yjzzbhlx,
                                                wjzzbhlx,
                                                iyjmoney,
                                                cprojectcode,
                                                cprojectname,
                                                cdate,
                                                iorder,
                                                iqyarea,
                                                yqyzbhlx,
                                                wqyzbhlx)
         SELECT heji_name,                                                                                            --
                ROUND (SUM (s.idkbudget), 4),                                                                     --贷款预算
                ROUND (AVG (s.irate), 4),                                                                           --利率
                ROUND (AVG (s.itime), 4),                                                                           --周期
                ROUND (SUM (s.zbhlxze), 4),                                                                --E2E资本化利息总额A
                ROUND (DECODE (SUM (iarea), 0, 0, SUM (zbhlxze) / SUM (iarea)), 4),                            --单㎡资金成本①
                --        ROUND(SUM(S.DPMZICB),4), --单㎡资金成本①
                ROUND (SUM (s.iarea), 4),                                                                       --总可售面积D
                ROUND (SUM (s.ijzarea), 4),                                                                     --已结转面积②
                ROUND (DECODE (SUM (iarea), 0, 0, SUM (zbhlxze) / SUM (iarea) * SUM (s.ijzarea)), 4),     --已结转资本化利息=①*②
                --        ROUND(SUM(S.YJZZBHLX),4),--已结转资本化利息=①*②
                ROUND (SUM (s.zbhlxze) - DECODE (SUM (iarea), 0, 0, SUM (zbhlxze) / SUM (iarea) * SUM (s.ijzarea)), 4), --
                -- 未结转资本化利息
                --        ROUND(SUM(S.WJZZBHLX),4), --未结转资本化利息
                ROUND (SUM (s.iyjmoney), 4),                                                                    --实际应计利息
                v_cprojectcode,                                                                                   --项目编码
                v_cprojectname,                                                                                   --项目名称
                v_cdate,                                                                                    --查询条件——截止日期
                1,                                                                                           --合计的排序,固定值
                ROUND (SUM (s.iqyarea), 4),                                                                     --已签约面积3
                ROUND (DECODE (SUM (iarea), 0, 0, SUM (zbhlxze) / SUM (iarea) * SUM (s.iqyarea)), 4),                 --
                -- 已签约资本化利息D=①
                -- *3
                --        ROUND(SUM(S.YQYZBHLX),4),--已签约资本化利息D=①*3
                ROUND (SUM (s.zbhlxze) - DECODE (SUM (iarea), 0, 0, SUM (zbhlxze) / SUM (iarea) * SUM (s.iqyarea)), 4)
                   未签约资本化利息
           --        ROUND(SUM(S.WQYZBHLX),4) --未签约资本化利息
           FROM t_hig_borrow_dxmyzlxtz_his s
          WHERE (s.cprojectcode = v_cprojectcode OR s.cprojectname = v_cprojectname) AND s.cdate = v_cdate;  --只统计此次查询时间

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmyzlxtz;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMZJDKTZ_DK
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmzjdktz_dk (v_date IN DATE)                                                           --截止日期
   /*
   2.单项目融资台账-到贷款单

   yinbin

四种方式 3
   */
   AS
   BEGIN
      INSERT INTO t_hig_borrow_dxmzjdktz_dk_his t (cdocument,
                                                   czjfroms,
                                                   csxtypename,
                                                   cskfname,
                                                   cfdfname,
                                                   idkmoney,
                                                   ddkbegindate,
                                                   ddkenddate,
                                                   qixian,
                                                   ihkmoney,
                                                   inothkmoney,
                                                   iactualrate,
                                                   dklly1,
                                                   dklly2,
                                                   dklly3,
                                                   lxftszq,
                                                   lxftszh,
                                                   cprojectcode,
                                                   cprojectname,
                                                   cfqcode,
                                                   cfqname,
                                                   cdate)
         WITH dk
              AS (SELECT t.cdocument AS dkdh,                                                                     --贷款单号
                         t.czjfroms AS zjly,                                                                      --资金来源
                         t.csxtypename AS zjsx,                                                                   --资金属性
                         t.cskfname AS dkf,                                                                        --贷款方
                         t.cfdfname AS fdf,                                                                        --放贷方
                         t.idkmoney AS dkje,                                                                      --贷款金额
                         t.ddkbegindate AS dkr,                                                                    --贷款日
                         t.ddkenddate AS dqr,                                                                      --到期日
                         t.ddkenddate - t.ddkbegindate AS qx,                                                       --期限
                         t.iyfrate AS fksyfll,                                                                 --放款时应付利率
                         t.cprojectcode AS xmbm,                                                                  --项目编码
                         t.cprojectname AS xmmc,                                                                  --项目名称
                         t.cinstallmentcode AS fqcode,                                                            --分期编码
                         t.cinstallmentname AS fqname                                                             --分期名称
                    FROM t_hig_borrow_dk t
                   WHERE t.cstatus = y AND fn_date ('JD', t.ddkbegindate, v_date) = 1),
              hk
              AS (  SELECT t.cdkdocument AS dkdh,                                                                 --贷款单号
                                                 NVL (SUM (t.ihkmoney), 0) AS hkhj                                --还款合计
                      --            NVL(SUM(T.INOTHKMONEY),0) AS WHJE --未还金额
                      FROM t_hig_borrow_hk t
                     WHERE t.cstatus = y AND fn_date ('JD', t.dhkdate, v_date) = 1
                  GROUP BY t.cdkdocument),
              jx
              AS (  SELECT t.cdkdocument AS dkdh,                                                                 --贷款单号
                                                 NVL (SUM (t.iyjmoney), 0) AS yjlx,                             --应计利息金额
                                                                                   NVL (SUM (t.iyfmoney), 0) AS yflx --已付利息金额
                      FROM t_hig_borrow_jx t
                     WHERE t.cstatus = y AND t.csxtypecode = zjsx.kf AND fn_date ('JD', t.djxenddate, v_date) = 1
                  GROUP BY t.cdkdocument),
              res
              AS (SELECT dk.dkdh AS dkdh,                                                                         --贷款单号
                         dk.zjly AS zjly,                                                                         --资金来源
                         dk.zjsx AS zjsx,                                                                         --资金属性
                         dk.dkf AS dkf,                                                                            --贷款方
                         dk.fdf AS fdf,                                                                            --放贷方
                         dk.dkje AS dkje,                                                                         --贷款金额
                         dk.dkr AS dkr,                                                                            --贷款日
                         dk.dqr AS dqr,                                                                            --到期日
                         dk.qx AS qx,                                                                               --期限
                         hk.hkhj AS hkhj,                                                                         --还款合计
                         NVL (dk.dkje, 0) - NVL (hk.hkhj, 0) AS whje,                                             --未还金额
                         dk.fksyfll AS fksyfll,                                                                --放款时应付利率
                         fn_dkll (dk.dkdh, v_date, 1) AS y1,                                                    --贷款利率Y1
                         fn_dkll (dk.dkdh, v_date, 2) AS y2,                                                    --贷款利率Y2
                         fn_dkll (dk.dkdh, v_date, 3) AS y3,                                                    --贷款利率Y3
                         NVL (jx.yflx, 0) - NVL (jx.yjlx, 0) AS lxftszq,                                      --四证前 利息分摊
                         jx.yjlx AS lxftszh,                                                                  --四证后 利息分摊
                         dk.xmbm AS xmbm,                                                                         --项目编码
                         dk.xmmc AS xmmc,                                                                         --项目名称
                         dk.fqcode AS fqcode,                                                                     --分期编码
                         dk.fqname AS fqname,                                                                     --分期名称
                         v_date AS cdate                                                                        --存储执行日期
                    FROM dk
                         LEFT JOIN hk ON dk.dkdh = hk.dkdh
                         LEFT JOIN jx ON dk.dkdh = jx.dkdh),
              heji
              AS (  SELECT heji_name AS dkdh,                                                                     --贷款单号
                           NULL AS zjly,                                                                          --资金来源
                           NULL AS zjsx,                                                                          --资金属性
                           NULL AS dkf,                                                                            --贷款方
                           NULL AS fdf,                                                                            --放贷方
                           SUM (t.dkje) AS dkje,                                                                  --贷款金额
                           NULL AS dkr,                                                                            --贷款日
                           NULL AS dqr,                                                                            --到期日
                           NULL AS qx,                                                                    --期限 SUM(T.QX)
                           SUM (t.hkhj) AS hkhj,                                                                  --还款合计
                           SUM (t.whje) AS whje,                                                                  --未还金额
                           NULL AS fksyfll,                                                     --放款时应付利率 AVG(T.FKSYFLL)
                           NULL AS y1,                                                                       --AVG(T.Y1)
                           NULL AS y2,                                                                       --AVG(T.Y2)
                           NULL AS y3,                                                                       --AVG(T.Y3)
                           SUM (t.lxftszq) AS lxftszq,                                                        --四证前 利息分摊
                           SUM (t.lxftszh) AS lxftszh,                                                        --四证后 利息分摊
                           t.xmbm AS xmbm,                                                                        --项目编码
                           t.xmmc AS xmmc,                                                                        --项目名称
                           t.fqcode AS fqcode,                                                                    --分期编码
                           t.fqname AS fqname,                                                                    --分期名称
                           t.cdate AS cdate                                                                     --存储执行日期
                      FROM res t
                  GROUP BY t.xmbm,
                           t.xmmc,
                           t.fqcode,
                           t.fqname,
                           t.cdate /*
                                   GROUP BY
                                   T.XMBM,
                                   T.XMMC,
                                   T.FQCODE,
                                   T.FQNAME,
                                   T.CDATE
                                   看到多了分组字段,请您对照上面的这个注释给与修改,谢谢
                                   */
                                  )
         SELECT * FROM res
         UNION ALL
         SELECT * FROM heji;

      ----
      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmzjdktz_dk;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_QXMYZLXTZ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_qxmyzlxtz (v_cdate IN DATE)                                                             --截止日期
   AS
   /*
   1.全生命周期应转利息台账
   YINBIN
   */
   BEGIN
      /*插入主数据*/
      INSERT INTO t_hig_borrow_qxmyzlxtz_his t (cprojectcode,
                                                cprojectname,
                                                cdate,
                                                iorder,
                                                cprojectnamefmt,
                                                cstatus)
         SELECT t.cyhcode,                                                                                        --项目编码
                t.cyhname,                                                                                        --项目名称
                v_cdate,                                                                                    --查询条件——截止日期
                t.iorder,                                                                                         --项目排序
                t.cprojectname,                                                                              --格式化后的项目名称
                cstatus                                                                                          --是否是项目
           FROM t_hig_szproject t
          WHERE t.bflag = 0                                                                                      --是否是项目
                           AND t.byzflag = 0;                                                           --已经结转完毕的项目就不再显示

      /*更新 需要额外查询的字段*/
      UPDATE t_hig_borrow_qxmyzlxtz_his t
         --
         --------------------------------------------------------------------------------------------------------
         -- 1.E2E资金成本动态预算
         SET (idkbudget,
              irate,
              itime,
              zbhlxze,
              iarea,
              --2.已结转资本化利息
              ijzarea,
              --3.已签约面积
              iqyarea) =
                (SELECT NVL (SUM (y.idkbudget), 0),                                                               --贷款预算
                        NVL (AVG (y.irate), 0),                                                                     --利率
                        NVL (AVG (y.itime), 0),                                                                     --周期
                        NVL (SUM (y.idkbudget), 1) * (NVL (AVG (y.irate), 0) / 100) * NVL (AVG (y.itime), 0), --E2E资本化利息总额=贷款预算*利率*周期
                        NVL (SUM (y.iarea), 0),                                                                  --总可售面积
                        NVL (SUM (y.ijzarea), 0),                                                               --已结转面积②
                        NVL (SUM (y.iqyarea), 0)                                                              --已签约资本化面积
                   FROM t_hig_rzqzqbudget y
                  WHERE y.cstatus = y AND (y.cprojectname = t.cprojectname OR y.cprojectcode = t.cprojectcode) --            AND FN_DATE('JD',Y.DCREATEDATE,V_CDATE)=1
                                                                                                              ),
             --
             --------------------------------------------------------------------------------------------------------
             -- 3.实际应计利息 C
             iyjmoney =
                (SELECT NVL (SUM (j.iyjmoney), 0)                                                    --取项目累计到当前月的实际应计利息数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cstatus = y
                        AND j.csxtypecode IN (zjsx.gd, zjsx.kf)                                          --仅仅计算股东贷款和开发贷款
                        AND (j.cprojectcode = t.cprojectcode OR j.cprojectname = t.cprojectname)
                        AND fn_date ('JM', j.djxenddate, v_cdate) = 1)
       WHERE cdate = v_cdate;                                                                                  --更新当天的东东

      /*
      计算字段
      */
      UPDATE t_hig_borrow_qxmyzlxtz_his t
         SET dpmzicb = CASE WHEN t.iarea = 0 THEN 0 ELSE NVL (zbhlxze, 0) / iarea END                          --单㎡资金成本①
       WHERE cdate = v_cdate;                                                                                  --更新当天的东东

      /**
      */
      --
      --------------------------------------------------------------------------------------------------------
      -- 4.计算字段
      UPDATE t_hig_borrow_qxmyzlxtz_his t
         SET yjzzbhlx = (NVL (dpmzicb, 0) * NVL (ijzarea, 0)),                                           --已结转资本化利息B=①*②
                                                              yqyzbhlx = (NVL (dpmzicb, 0) * NVL (iqyarea, 0)) --已签约资本化利息D=①*3
       WHERE cdate = v_cdate;                                                                                 --更新当天的东东。

      UPDATE t_hig_borrow_qxmyzlxtz_his t
         SET wjzzbhlx = (NVL (zbhlxze, 0) - NVL (yjzzbhlx, 0)),                                               --未结转资本化利息
                                                               wqyzbhlx = (NVL (zbhlxze, 0) - NVL (yqyzbhlx, 0)) --未签约资本化利息
       WHERE cdate = v_cdate;                                                                                 --更新当天的东东。

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_qxmyzlxtz;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_DXMZJDKTZ_HK
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_dxmzjdktz_hk (v_date IN DATE)                                                           --截止日期
   /*
   2.单项目融资台账-到还款单
   YINBIN
   */
   AS
      p_num   NUMBER;
   BEGIN
      --插入数据
      INSERT INTO t_hig_borrow_dxmzjdktz_hk_his t (cdocument,
                                                   cbankcategoryname,
                                                   caccount,
                                                   ihkmoney,
                                                   dhkdate,
                                                   cdkdocument,
                                                   cdate,
                                                   cprojectname,
                                                   cprojectcode)
         WITH hk
              AS (SELECT t.cdocument AS hkdh,                                                                     --还款单号
                         t.cbankname AS khyh,                                                                     --开户银行
                         t.caccount AS zh,                                                                          --账号
                         t.ihkmoney AS hkje,                                                                      --还款金额
                         t.dhkdate AS hkrq,                                                                       --还款日期
                         t.cdkdocument AS dkdh,                                                                   --贷款单号
                         t.cprojectcode AS xmbm,                                                                  --项目编码
                         t.cprojectname AS xmmc                                                                   --项目名称
                    FROM t_hig_borrow_hk t
                   WHERE t.cstatus = y AND fn_date ('JD', t.dhkdate, v_date) = 1),
              heji
              AS (  SELECT NULL AS hkdh,                                                                          --还款单号
                           NULL AS khyh,                                                                          --开户银行
                           NULL AS zh,                                                                              --账号
                           ROUND (SUM (t.hkje), 4) AS hkje,                                                       --还款金额
                           NULL AS hkrq,                                                                          --还款日期
                           t.dkdh AS dkdh,                                                                        --贷款单号
                           t.xmbm AS xmbm,                                                                        --项目编码
                           t.xmmc AS xmmc                                                                         --项目名称
                      FROM hk t
                  GROUP BY t.dkdh, t.xmbm, t.xmmc)
         SELECT hkdh,                                                                                             --还款单号
                khyh,                                                                                             --开户银行
                zh,                                                                                                 --账号
                hkje,                                                                                             --还款金额
                hkrq,                                                                                             --还款日期
                dkdh,                                                                                             --贷款单号
                v_date,                                                                                         --存储执行日期
                xmbm,                                                                                             --项目编码
                xmmc                                                                                              --项目名称
           FROM hk
         UNION ALL
         SELECT hkdh,                                                                                             --还款单号
                khyh,                                                                                             --开户银行
                zh,                                                                                                 --账号
                hkje,                                                                                             --还款金额
                hkrq,                                                                                             --还款日期
                dkdh,                                                                                             --贷款单号
                v_date,                                                                                         --存储执行日期
                xmbm,                                                                                             --项目编码
                xmmc                                                                                              --项目名称
           FROM heji;

      --
      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_dxmzjdktz_hk;

   --------------------------------------------------------
   --  DDL for Procedure P_HIG_BORROW_QXMYFLXTZ
   --------------------------------------------------------
   PROCEDURE p_hig_borrow_qxmyflxtz (v_date IN DATE)                                                              --截止日期
   AS
      /*
      全项目应付利息台账
      YINBIN
      */
      --本年   需要改为 sysdate   '2012-03-07'
      p_bennian   NUMBER := EXTRACT (YEAR FROM v_date);
      --本月   需要改为 sysdate
      p_benyue    NUMBER := EXTRACT (MONTH FROM v_date);
   BEGIN
      --
      --  FOR P IN
      --  (
      --    SELECT
      --      T.CYHCODE,     --项目编码
      --      T.CYHNAME,     --项目名称
      --      T.CPROJECTNAME,--格式化后的项目编码
      --      T.CXMJYTZ,     --经营体长
      --      T.CSTATUS      --是否是项目
      --    FROM
      --      T_HIG_SZPROJECT T
      --  )
      --  LOOP
      --    NULL;
      --  END LOOP
      INSERT INTO t_hig_borrow_qxmyflxtz_his t (cprojectcode,
                                                xmmc,
                                                cprojectnamefmt,
                                                jytz,
                                                cstatus,
                                                cdate,
                                                iorder)
         SELECT s.cyhcode,                                                                                        --项目编码
                s.cyhname,                                                                                        --项目名称
                s.cprojectname,                                                                              --格式化后的项目编码
                s.cxmjytz,                                                                                        --经营体长
                s.cstatus,                                                                                       --是否是项目
                v_date,                                                                                           --截止日期
                s.iorder                                                                                            --排序
           FROM t_hig_szproject s
          WHERE s.bflag = 0;                                                                                  --只查询有效的项目

      --更新 查询字段
      UPDATE t_hig_borrow_qxmyflxtz_his t
         SET                                                --      --------------------------------------------------累计
            ljyfgdtr                                                                                           --应付股东投入⑤
                     =
                (SELECT SUM (j.iyfmoney)                                                         --取从项目开始至当前日股东投入应付利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.gd
                        AND fn_date ('JD', j.djxenddate, v_date) = 1),
             ljyfgdtrlx                                                                                      --已付股东投入利息②
                        =
                (SELECT SUM (h.ihxmoney - h.iyjmoney)                                   --取从项目开始至当前日开发贷还息单中(本次付息金额-应计利息)
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date ('JD', h.dhxdate, v_date) = 1),
             ljyfkfd                                                                                             --应付开发贷
                     =
                (SELECT SUM (j.iyjmoney)                                                          --取从项目开始至当前日开发贷应计利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.kf
                        AND fn_date ('JD', j.djxenddate, v_date) = 1),
             ljyfkfdlx                                                                                        --已付开发贷利息③
                       =
                (SELECT SUM (h.iyjmoney)                                                      --取从项目开始至当前日开发贷还息单中应计利息实际数
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date ('JD', h.dhxdate, v_date) = 1),
             --      --------------------------------------------------本年
             bnyfgdtr                                                                                          --应付股东投入⑤
                      =
                (SELECT SUM (j.iyjmoney)                                                         --取从项目开始至当前日股东投入应付利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.gd
                        AND fn_date (y, j.djxenddate, v_date) = 1),
             bnyfgdtrlx                                                                                      --已付股东投入利息②
                        =
                (SELECT SUM (h.ihxmoney - h.iyjmoney)                                   --取从项目开始至当前日开发贷还息单中(本次付息金额-应计利息)
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date (y, h.dhxdate, v_date) = 1),
             bnyfkfd                                                                                             --应付开发贷
                     =
                (SELECT SUM (j.iyjmoney)                                                          --取从项目开始至当前日开发贷应计利息实际数
                   FROM t_hig_borrow_jx j
                  WHERE     j.cprojectcode = t.cprojectcode
                        AND j.cstatus = y
                        AND j.csxtypecode = zjsx.kf
                        AND fn_date (y, j.djxenddate, v_date) = 1),
             bnyfkfdlx                                                                                        --已付开发贷利息③
                       =
                (SELECT SUM (h.iyjmoney)                                                      --取从项目开始至当前日开发贷还息单中应计利息实际数
                   FROM t_hig_borrow_hx h
                  WHERE     h.cprojectcode = t.cprojectcode
                        AND h.cstatus = y
                        AND h.csxtypecode = zjsx.kf
                        AND fn_date (y, h.dhxdate, v_date) = 1)
       --  SET
       --    (
       --      --------------------------------------------------累计
       --      LJYFGDTR,  --应付股东投入⑤
       --      LJYFGDTRLX,--已付股东投入利息②
       --      LJYFKFD,   --应付开发贷
       --      LJYFKFDLX, --已付开发贷利息③
       --      --------------------------------------------------本年
       --      BNYFGDTR,  --应付股东投入
       --      BNYFGDTRLX,--已付股东投入利息
       --      BNYFKFD,   --应付开发贷
       --      BNYFKFDLX  --已付开发贷利息
       --    )
       --    =
       --    (
       --      SELECT
       --        1,1,1,1,1,1,1,1
       --      FROM
       --        DUAL
       --    )
       WHERE t.cdate = v_date;

      -- 更新 计算字段
      UPDATE t_hig_borrow_qxmyflxtz_his t
         SET                                                        --------------------------------------------------本年
            bnljzf = NVL (bnyfgdtrlx, 0) + NVL (bnyfkfdlx, 0),                                                  --本年累计支付
                                                              bnwfgdtr = NVL (bnyfgdtr, 0) - NVL (bnyfgdtrlx, 0) --未付股东投入
       WHERE t.cdate = v_date;

      UPDATE t_hig_borrow_qxmyflxtz_his t
         SET                                                        --------------------------------------------------累计
            ljzf = NVL (ljyfgdtrlx, 0) + NVL (ljyfkfdlx, 0),                                                 --累计支付①=②+③
                                                            ljwfgdtr = NVL (ljyfgdtr, 0) - NVL (ljyfgdtrlx, 0) --未付股东投入④=⑤-②
       WHERE t.cdate = v_date;

      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         RAISE;
   END p_hig_borrow_qxmyflxtz;

   /*
    punit测试,全部存储的测试入口
   */
   PROCEDURE test_all (ddate IN DATE, isclear IN BOOLEAN DEFAULT FALSE)
   IS
      begin_date   NUMBER;
      end_date     NUMBER;
   BEGIN
      IF isclear = TRUE
      THEN
         FOR c IN (SELECT ('DELETE FROM ' || t.table_name) AS text, t.table_name AS tname, c.comments AS comm
                     FROM user_tables t LEFT JOIN user_tab_comments c ON c.table_name = t.table_name
                    WHERE t.table_name LIKE '%T_HIG_BORROW_QXM%' OR t.table_name LIKE '%T_HIG_BORROW_DXM%')
         LOOP
            DBMS_OUTPUT.put_line ('清空了表:' || c.tname || '(' || c.comm || ')');

            EXECUTE IMMEDIATE c.text;
         END LOOP;

         COMMIT;
         DBMS_OUTPUT.put_line ('表数据清理完毕!');
      END IF;

      DBMS_OUTPUT.put_line (
         '开始全部存储过程的测试!(如果某个存储过程有异常,会自动输出异常信息的)');
      begin_date := DBMS_UTILITY.get_cpu_time ();

      /*

SELECT 'CALL ' || t.object_name || '.' || t.procedure_name || '(:ddate)' AS text,
       t.object_name || '.' || t.procedure_name AS proc
  FROM user_procedures t
 WHERE     t.object_name LIKE '%HIG_REPORT_BORROW%'
       AND t.procedure_name NOT LIKE 'P_%'
       AND t.procedure_name NOT LIKE 'FN_%'
       AND t.procedure_name NOT LIKE 'UTIL_%'
       AND t.procedure_name NOT LIKE 'LOG_%'
       AND t.procedure_name NOT LIKE 'TEST_%';


SELECT 'CALL ' || t.object_name || '.' || t.procedure_name || '(:ddate)' AS text,
       t.object_name || '.' || t.procedure_name AS proc
  FROM user_procedures t
 WHERE     t.object_name LIKE '%HIG_REPORT_BORROW%'
       AND NOT EXISTS
              ( (SELECT *
                   FROM user_procedures
                  WHERE LENGTH (REGEXP_SUBSTR (t.procedure_name, '(^P_*)|(^FN_*)|(^UTIL_*)|(^LOG_*)|(^TEST_*)')) > 0));
      */
      FOR c
         IN (SELECT 'CALL ' || t.object_name || '.' || t.procedure_name || '(:ddate)' AS text,
                    t.object_name || '.' || t.procedure_name AS proc
               FROM user_procedures t
              WHERE     t.object_name LIKE '%HIG_REPORT_BORROW%'
                    AND NOT REGEXP_LIKE (t.procedure_name, '(^P_*)|(^FN_*)|(^UTIL_*)|(^LOG_*)|(^TEST_*)'))
      LOOP
         EXECUTE IMMEDIATE c.text USING ddate;

         DBMS_OUTPUT.put_line (c.proc || '              complated!');
      END LOOP;

      end_date := DBMS_UTILITY.get_cpu_time ();
      sys.DBMS_OUTPUT.put_line ('总共耗时:' || TO_CHAR (end_date - begin_date) || '毫秒');
      DBMS_OUTPUT.put_line ('结束全部存储过程的测试!');
      sys.DBMS_OUTPUT.put_line ('退出程序,请手动关闭此窗口!');
      COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         end_date := DBMS_UTILITY.get_time ();
         sys.DBMS_OUTPUT.put_line ('总共耗时:' || TO_CHAR (end_date - begin_date) || '毫秒');
         DBMS_OUTPUT.put_line (SQLCODE || ':' || SQLERRM);
         DBMS_OUTPUT.put_line ('结束全部存储过程的测试!');
         ROLLBACK;
         RAISE;
   END test_all;
END hig_report_borrow;
/

你可能感兴趣的:(body,复杂报表存储)