1. EPMO Open Source Coordination Office Redaction File Detail Report

Produced by Araxis Merge on 10/17/2017 6:31:31 AM Central Daylight Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.

1.1 Files compared

# Location File Last Modified
1 ADR FY17 Q4 Build 5 CIF submission.zip\ADR FY17 Q4 Build 5 CIF submission\ADR FY17 Q4 CIF submission\DDL\ADR procedure.sql Fri Sep 29 16:07:50 2017 UTC
2 ADR FY17 Q4 Build 5 CIF submission.zip\ADR FY17 Q4 Build 5 CIF submission\ADR FY17 Q4 CIF submission\DDL\ADR procedure.sql Mon Oct 16 18:15:11 2017 UTC

1.2 Comparison summary

Description Between
Files 1 and 2
Text Blocks Lines
Unchanged 2 11146
Changed 1 2
Inserted 0 0
Removed 0 0

1.3 Comparison options

Whitespace
Character case Differences in character case are significant
Line endings Differences in line endings (CR and LF characters) are ignored
CR/LF characters Not shown in the comparison detail

1.4 Active regular expressions

No regular expressions were active.

1.5 Comparison detail

  1   DROP PROCE DURE ADR.A CTIVEAGG_T RACKER_PRO C;
  2  
  3   CREATE OR  REPLACE PR OCEDURE AD R.ACTIVEAG G_TRACKER_ PROC
  4   IS
  5      gc_sche ma_owner_n ame         VARCHAR2  (20) := 'A DR';
  6      v_parti tion_high_ val_date    DATE;
  7      v_sql                          VARCHAR2  (2000);
  8      v_cut_o ff_date                INTEGER : = 6;
  9      v_CURRE NT_ACTIVE_ DATE        DATE;
  10      v_PREVI OUS_ACTIVE _DATE       DATE;
  11   BEGIN
  12      SELECT  CURRENT_AC TIVE_DATE,  PREVIOUS_ ACTIVE_DAT E
  13        INTO  v_CURRENT_ ACTIVE_DAT E, v_PREVI OUS_ACTIVE _DATE
  14        FROM  ADR.ACTIVE AGG_TRACKE R
  15       WHERE  LOADING_ST ATUS = 'YE S';
  16  
  17      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('ACTIVEA GG_TRACKER _AUR_TRGR' , 1, 60),
  18                                    PD_job_log _date       => SYSDAT E,
  19                                    PC_job_sta tus         => 'SUCCE SS',
  20                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (   'v_CU RRENT_ACTI VE_DATE :  '
  21                                                                       || v_CUR RENT_ACTIV E_DATE
  22                                                                       || ' v_P REVIOUS_AC TIVE_DATE:  '
  23                                                                       || v_PRE VIOUS_ACTI VE_DATE,
  24                                                                       1,
  25                                                                       60));
  26  
  27      FOR r I N (SELECT  table_name ,
  28                         partition_ name,
  29                         high_value ,
  30                         interval
  31                   FROM  user_tab_p artitions
  32                  WHERE  UPPER (tab le_name) =  ('ACTIVEA GG'))
  33      LOOP
  34         EXEC UTE IMMEDI ATE
  35                'SELECT  '
  36            | | r.high_v alue
  37            | | ' from d ual'
  38            I NTO v_part ition_high _val_date;
  39  
  40         IF      (TRUNC  (v_partiti on_high_va l_date) <  TRUNC (v_C URRENT_ACT IVE_DATE -  v_cut_off _date))
  41            A ND TRUNC ( v_partitio n_high_val _date) <>  TRUNC (v_P REVIOUS_AC TIVE_DATE)
  42         THEN
  43            I F r.interv al = 'NO'
  44            T HEN
  45                v_sql :=
  46                      'A LTER TABLE  '
  47                   || gc _schema_ow ner_name
  48                   || '. '
  49                   || r. table_name
  50                   || '  TRUNCATE P ARTITION '
  51                   || r. partition_ name;
  52  
  53                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  54                                             P D_job_log_ date       => SYSDATE ,
  55                                             P C_job_stat us         => 'SUCCES S',
  56                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  57                                                                                 || ' '
  58                                                                                 || v_part ition_high _val_date,
  59                                                                                 1,
  60                                                                                 60));
  61  
  62                EXECUTE  IMMEDIATE  v_sql;
  63            E LSE
  64                v_sql :=
  65                      'A LTER TABLE  '
  66                   || gc _schema_ow ner_name
  67                   || '. '
  68                   || r. table_name
  69                   || '  DROP PARTI TION '
  70                   || r. partition_ name;
  71  
  72                ADRMGT.J ob_Process _Log_Sp (P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  73                                             P D_job_log_ date       => SYSDATE ,
  74                                             P C_job_stat us         => 'SUCCES S',
  75                                             P C_JOB_LOG_ MESSAGE    => SUBSTR  (   v_sql
  76                                                                                 || ' '
  77                                                                                 || v_part ition_high _val_date,
  78                                                                                 1,
  79                                                                                 60));
  80  
  81                EXECUTE  IMMEDIATE  v_sql;
  82            E ND IF;
  83         END  IF;
  84      END LOO P;
  85   EXCEPTION
  86      WHEN NO _DATA_FOUN D
  87      THEN
  88         ADRM GT.Job_Pro cess_Log_S p (
  89            P C_job_name            => SUBSTR  ('ACTIVEAG G_TRACKER_ AUR_TRGR',  1, 60),
  90            P D_job_log_ date       => SYSDATE ,
  91            P C_job_stat us         => 'SUCCES S',
  92            P C_JOB_LOG_ MESSAGE    => SUBSTR  ('Nothing  to drop; n o record F OUND in AD r.ACTIVEAG G_TRACKER   WHERE LOA DING_STATU S = ''YES' '', 1, 60) );
  93      WHEN OT HERS
  94      THEN
  95         ADRM GT.Job_Pro cess_Log_S p (PC_job_ name           => SUB STR ('ACTI VEAGG_TRAC KER_AUR_TR GR', 1, 60 ),
  96                                       PD_job_ log_date       => SYS DATE,
  97                                       PC_job_ status         => 'PA RTITION DR OP FAILED' ,
  98                                       PC_JOB_ LOG_MESSAG E   => SUB STR (   DB MS_UTILITY .FORMAT_CA LL_STACK
  99                                                                          || DB MS_UTILITY .format_er ror_stack
  100                                                                          || DB MS_UTILITY .format_er ror_backtr ace,
  101                                                                          1,
  102                                                                          60));
  103   END ACTIVE AGG_TRACKE R_PROC;
  104   /
  105   DROP PROCE DURE ADR.A DR_ADDRESS _Z05_UPDAT E_SP;
  106  
  107   CREATE OR  REPLACE PR OCEDURE AD R.Adr_Addr ess_Z05_Up date_Sp
  108     (PB_run_ standalone
  109        IN      BOOLEAN  DEFAULT FA LSE,
  110      PB_allo w_rpt_inst
  111        IN      BOOLEAN  DEFAULT FA LSE
  112     )
  113   IS
  114  
  115   -- ******* ********** ********** ********** ********** ********** ********** ********
  116   -- * Proce dure: Adr_ Address_Z0 5_Update_S p
  117   -- *
  118   -- *  Temp orary 3.1  Address ta ble bug fi x to be ru n nightly.
  119   -- *
  120   -- *  - Se lects all  temporary  Address re cords wher e the Inst itution_id  or the
  121   -- *    Ad dress_chan ge_src_typ e_id is NU LL
  122   -- *  - If  Instituti on_id is N ULL, try t o find val id Institu tion_id an d update
  123   -- *    co lumn with  new value.
  124   -- *  - Re port any r ows where  the Instit ution_id c annot be s et.
  125   -- *  - If  Address_c hange_src_ type_id is  NULL, upd ate column  with valu e of
  126   -- *    14 66952
  127   -- *
  128   -- * Param eters:
  129   -- *
  130   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  131   -- *                         Def ault: FALS E
  132   -- *
  133   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  134   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  135   -- *                         Def ault: FALS E
  136   -- *
  137   -- ******* ********** ********** ********** ********** ********** ********** ********
  138   --
  139   -- ======= ========== ========== ========== ========== ========== ========== ========
  140   -- Date         Autho r             Descrip tion
  141   -- ======= ========== ========== ========== ========== ========== ========== ========
  142   -- 04/05/2 010  Craig  Wood         Created  for CCR 1 156.
  143   -- 05/03/2 010  Craig  Wood         Add log ic to chec k for merg ed address  rows
  144   --
  145   -- ======= ========== ========== ========== ========== ========== ========== ========
  146  
  147   -- CONSTAN TS
  148  
  149     CC_temp_ addr_id                        C ONSTANT NU MBER := 14 49005;
  150     CC_inst_ id_mask                        C ONSTANT VA RCHAR2(5)  := 'VAMC-' ;
  151     CN_addr_ chg_src_ty pe                  C ONSTANT NU MBER := 14 66952;
  152  
  153   -- VARIABL ES
  154  
  155     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  156     VB_error                                B OOLEAN :=  FALSE;
  157     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  158     VB_updat e_row                          B OOLEAN :=  FALSE;
  159  
  160     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  161     VC_insta nce_name                       V ARCHAR2(16 );
  162     VC_proce ss_duratio n                   V ARCHAR2(25 );
  163     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Update Tem p Addresse s (Z05)';
  164     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  165  
  166     VD_log_d ate                            D ATE;
  167     VD_proce ss_end_dat e                   D ATE;
  168     VD_proce ss_start_d ate                 D ATE;
  169     VD_rec_g roup_date                      D ATE;
  170  
  171     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  172     VN_job_c ount                           N UMBER := 0 ;
  173     VN_job_n umber                          N UMBER := 0 ;
  174     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  175     VN_error _recs_coun t                   N UMBER := 0 ;
  176     VN_no_in st_id_coun t                   N UMBER := 0 ;
  177     VN_rec_c ount                           N UMBER := 0 ;
  178     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  179     VN_std_i nstitution _id                 N UMBER := 0 ;
  180     VN_total _recs_coun t                   N UMBER := 0 ;
  181  
  182     CURSOR C _addr_rec  IS
  183       SELECT     A.Addr ess_id,
  184                  A.Pers on_id,
  185                  A.Addr ess_change _src_type_ id,
  186                  A.Std_ institutio n_id,
  187                  A.Reco rd_created _by,
  188                  A.Reco rd_modifie d_by
  189       FROM       ADR.Ad dress A
  190       WHERE      A.Std_ addresstyp e_id = CC_ temp_addr_ id
  191       AND        (Std_i nstitution _id IS NUL L
  192                  OR
  193                   Addre ss_change_ src_type_i d IS NULL) ;
  194  
  195   -- ******* ********** ********** ********** ********** ********** ********** *******
  196   -- *
  197   -- *  MAIN  PROCEDURE :
  198   -- *
  199   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  200   -- *
  201   -- ******* ********** ********** ********** ********** ********** ********** *******
  202  
  203   BEGIN
  204  
  205     VD_rec_g roup_date  := TRUNC(S YSDATE);
  206  
  207     VD_log_d ate := SYS DATE;
  208     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  209                                 PD _job_log_d ate => VD_ log_date,
  210                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  211                                 PD _date1 =>  VD_rec_gro up_date,
  212                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  213  
  214   -- ******* ********** ********** ********** ********** ********** ********** ********
  215   -- *
  216   -- * Valid ate input  parameters
  217   -- *
  218   -- ******* ********** ********** ********** ********** ********** ********** ********
  219  
  220   -- * Check  run stand alone flag
  221  
  222     IF PB_ru n_standalo ne IS NULL
  223      OR NOT  PB_run_sta ndalone TH EN
  224  
  225       VB_run _standalon e := FALSE ;
  226       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  227  
  228     ELSE
  229  
  230       VB_run _standalon e := TRUE;
  231       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  232  
  233     END IF;
  234  
  235   -- * Check  run on re port insta nce flag
  236  
  237     IF PB_al low_rpt_in st IS NULL
  238      OR NOT  PB_allow_r pt_inst TH EN
  239  
  240       VB_all ow_rpt_ins t := FALSE ;
  241       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  242  
  243     ELSE
  244  
  245       VB_all ow_rpt_ins t := TRUE;
  246       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  247  
  248     END IF;
  249  
  250     VD_log_d ate := SYS DATE;
  251     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  252                                 PD _job_log_d ate => VD_ log_date,
  253                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  254                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  255                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  256                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  257                                 PD _date1 =>  VD_rec_gro up_date,
  258                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  259  
  260   -- ******* ********** ********** ********** ********** ********** ********** ********
  261   -- *
  262   -- * Check  to see if  process i s running  on a repor ting datab ase.
  263   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  264   -- *
  265   -- ******* ********** ********** ********** ********** ********** ********** ********
  266  
  267     IF NOT V B_allow_rp t_inst THE N
  268  
  269       BEGIN
  270  
  271         VD_l og_date :=  SYSDATE;
  272         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  273                                      PD_job_l og_date =>  VD_log_da te,
  274                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  275                                      PD_date1  => VD_rec _group_dat e,
  276                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  277  
  278         SELE CT    Inst ance_name
  279         INTO       VC_i nstance_na me
  280         FROM       V$in stance;
  281  
  282         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  283  
  284           VD _log_date  := SYSDATE ;
  285           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  286                                        PD_job _log_date  => VD_log_ date,
  287                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  288                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  289                                                                     || VC_inst ance_name
  290                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  291                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  292                                        PD_dat e1 => VD_r ec_group_d ate,
  293                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  294  
  295           RE TURN;
  296  
  297         END  IF;
  298  
  299       EXCEPT ION
  300  
  301         WHEN  OTHERS TH EN
  302  
  303           VD _log_date  := SYSDATE ;
  304           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  305                                        PD_job _log_date  => VD_log_ date,
  306                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  307                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  308                                        PD_dat e1 => VD_r ec_group_d ate,
  309                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  310  
  311           RE TURN;
  312  
  313       END;
  314  
  315     END IF;
  316  
  317   -- ******* ********** ********** ********** ********** ********** ********** ********
  318   -- *
  319   -- * Check  to see if  the job h as already  run today
  320   -- *  - If  running i n stand-al one mode,  don't chec k.
  321   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  322   -- *
  323   -- ******* ********** ********** ********** ********** ********** ********** ********
  324  
  325     IF NOT P B_run_stan dalone THE N
  326  
  327       BEGIN
  328  
  329         SELE CT    COUN T(*)
  330         INTO       VN_r ec_count
  331         FROM       ADRM GT.Job_Pro cess_Logs
  332         WHER E     Job_ name = VC_ process_na me
  333         AND        Date 1 = VD_rec _group_dat e
  334         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  335  
  336         IF V N_rec_coun t > 0 THEN
  337  
  338           VD _log_date  := SYSDATE ;
  339           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  340                                        PD_job _log_date  => VD_log_ date,
  341                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  342                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  343                                        PD_dat e1 => VD_r ec_group_d ate,
  344                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  345  
  346           RE TURN;
  347  
  348         END  IF;
  349  
  350       EXCEPT ION
  351  
  352         WHEN  OTHERS TH EN
  353  
  354           VD _log_date  := SYSDATE ;
  355           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  356                                        PD_job _log_date  => VD_log_ date,
  357                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  358                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  359                                        PD_dat e1 => VD_r ec_group_d ate,
  360                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  361  
  362           RE TURN;
  363  
  364       END;
  365  
  366     END IF;
  367  
  368   -- ******* ********** ********** ********** ********** ********** ********** ********
  369   -- *
  370   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  371   -- *  - If  yes, then  end this  job.
  372   -- *
  373   -- ******* ********** ********** ********** ********** ********** ********** ********
  374  
  375     SELECT C OUNT(*)
  376     INTO   V N_job_coun t
  377     FROM   S YS.DBA_JOB S_RUNNING  R,
  378            S YS.DBA_JOB S J
  379     WHERE  J .JOB = R.J OB
  380     AND    U PPER(J.WHA T) LIKE '% ADR_ADDRES S_Z05_UPDA TE_SP%';
  381  
  382     IF VN_jo b_count >  1 THEN
  383  
  384       VD_log _date := S YSDATE;
  385       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  386                                    PD_job_log _date => V D_log_date ,
  387                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  388                                    PC_job_log _message = > SUBSTR(' There is a nother add ress (Z05)  update jo b running. '
  389                                                                || '  Exiting j ob without  running.' ,1,2000),
  390                                    PD_date1 = > VD_rec_g roup_date,
  391                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  392  
  393       RETURN ;
  394  
  395     ELSE
  396  
  397       IF VB_ run_standa lone THEN
  398  
  399         VD_l og_date :=  SYSDATE;
  400         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  401                                      PD_job_l og_date =>  VD_log_da te,
  402                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  403                                      PD_date1  => VD_rec _group_dat e,
  404                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  405  
  406       ELSE
  407  
  408         SELE CT    MAX( J.Job)
  409         INTO       VN_j ob_number
  410         FROM       SYS. DBA_JOBS_R UNNING R,
  411                    SYS. DBA_JOBS J
  412         WHER E     J.JO B = R.JOB
  413         AND        UPPE R(J.WHAT)  LIKE '%ADR _ADDRESS_Z 05_UPDATE_ SP%';
  414  
  415         VD_l og_date :=  SYSDATE;
  416         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  417                                      PD_job_l og_date =>  VD_log_da te,
  418                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  419                                      PD_date1  => VD_rec _group_dat e,
  420                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  421  
  422       END IF ;
  423  
  424     END IF;
  425  
  426   -- ******* ********** ********** ********** ********** ********** ********** ********
  427   -- *
  428   -- * Main  processing  loop
  429   -- *
  430   -- ******* ********** ********** ********** ********** ********** ********** ********
  431  
  432     VN_error _recs_coun t := 0;
  433     VN_inst_ id_upd_cou nt := 0;
  434     VN_no_in st_id_coun t := 0;
  435     VN_src_t ype_upd_co unt := 0;
  436     VN_total _recs_coun t := 0;
  437  
  438     VD_proce ss_start_d ate := SYS DATE;
  439  
  440   -- Remove  all proces s logs ove r 14 days  old
  441  
  442     BEGIN
  443  
  444       VD_log _date := S YSDATE;
  445       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  446                                    PD_job_log _date => V D_log_date ,
  447                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  448                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  449                                    PD_date1 = > VD_rec_g roup_date,
  450                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  451  
  452       DELETE
  453       FROM       ADRMGT .Job_Proce ss_Logs
  454       WHERE      Job_na me = VC_pr ocess_name
  455       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  456  
  457       COMMIT ;
  458  
  459       VD_log _date := S YSDATE;
  460       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  461                                    PD_job_log _date => V D_log_date ,
  462                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  463                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  464                                    PD_date1 = > VD_rec_g roup_date,
  465                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  466  
  467  
  468     EXCEPTIO N
  469  
  470       WHEN N O_DATA_FOU ND THEN
  471  
  472         NULL ;
  473  
  474       WHEN O THERS THEN
  475  
  476         VD_l og_date :=  SYSDATE;
  477         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  478                                      PD_job_e rror_date   => VD_log _date,
  479                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  480                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  481                                                                        || SQLE RRM,1,2000 ),
  482                                      PD_date1  => VD_rec _group_dat e,
  483                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  484  
  485     END;
  486  
  487   -- Remove  all proces s errors o ver 14 day s old
  488  
  489     BEGIN
  490  
  491       VD_log _date := S YSDATE;
  492       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  493                                    PD_job_log _date => V D_log_date ,
  494                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  495                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  496                                    PD_date1 = > VD_rec_g roup_date,
  497                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  498  
  499       DELETE
  500       FROM       ADRMGT .Job_Proce ss_Errs
  501       WHERE      Job_na me = VC_pr ocess_name
  502       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  503  
  504       COMMIT ;
  505  
  506       VD_log _date := S YSDATE;
  507       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  508                                    PD_job_log _date => V D_log_date ,
  509                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  510                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  511                                    PD_date1 = > VD_rec_g roup_date,
  512                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  513  
  514     EXCEPTIO N
  515  
  516       WHEN N O_DATA_FOU ND THEN
  517  
  518         NULL ;
  519  
  520       WHEN O THERS THEN
  521  
  522         VD_l og_date :=  SYSDATE;
  523         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  524                                      PD_job_e rror_date   => VD_log _date,
  525                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  526                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  527                                                                        || SQLE RRM,1,2000 ),
  528                                      PD_date1  => VD_rec _group_dat e,
  529                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  530  
  531     END;
  532  
  533   -- Main re cord curso r logic
  534  
  535     FOR I_ad dr_rec IN  C_addr_rec  LOOP
  536  
  537       VB_err or := FALS E;
  538       VB_upd ate_row :=  FALSE;
  539       VN_tot al_recs_co unt := VN_ total_recs _count + 1 ;
  540       VN_add r_chg_src_ type_id :=  I_addr_re c.Address_ change_src _type_id;
  541       VN_std _instituti on_id := I _addr_rec. Std_instit ution_id;
  542  
  543   -- Logic f or Address _change_sr c_type_id
  544  
  545       IF VN_ addr_chg_s rc_type_id  IS NULL T HEN
  546  
  547         VN_a ddr_chg_sr c_type_id  := CN_addr _chg_src_t ype;
  548         VB_u pdate_row  := TRUE;
  549         VN_s rc_type_up d_count :=  VN_src_ty pe_upd_cou nt + 1;
  550  
  551       END IF ;
  552  
  553   -- Logic f or Std_ins titution_i d
  554  
  555       IF VN_ std_instit ution_id I S NULL THE N
  556  
  557   --   First  try for s tation num ber from r ecord_modi fied_by co lumn
  558  
  559         IF I _addr_rec. Record_mod ified_by L IKE CC_ins t_id_mask  || '%' THE N
  560  
  561           BE GIN
  562  
  563              SELECT     Id
  564              INTO       VN_std_ins titution_i d
  565              FROM       Std_Instit ution
  566              WHERE      Stationnum ber = SUBS TR(I_addr_ rec.Record _modified_ by,
  567                                                  6,
  568                                                  LENGTH( I_addr_rec .Record_mo dified_by) -5);
  569  
  570              VB_update_ row := TRU E;
  571              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  572  
  573           EX CEPTION
  574  
  575              WHEN NO_DA TA_FOUND T HEN
  576  
  577                NULL;
  578  
  579              WHEN OTHER S THEN
  580  
  581                VB_error  := TRUE;
  582                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  583  
  584                VD_log_d ate := SYS DATE;
  585                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  586                                            PD _job_error _date  =>  VD_log_dat e,
  587                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  588                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Record_ modified_b y.'
  589                                                                           || '  Std_insti tution_id:  '
  590                                                                           || S UBSTR(I_ad dr_rec.Rec ord_modifi ed_by,6,LE NGTH(I_add r_rec.Reco rd_modifie d_by)-5)
  591                                                                           || ' . '
  592                                                                           || S QLERRM,1,2 000),
  593                                            PD _date1 =>  VD_rec_gro up_date,
  594                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  595                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  596  
  597           EN D;
  598  
  599         END  IF;
  600  
  601   --   If st ill no ins titution_i d, try for  station n umber from  record_cr eated_by c olumn
  602  
  603         IF N OT VB_erro r
  604          AND  VN_std_in stitution_ id IS NULL
  605          AND  I_addr_re c.Record_c reated_by  LIKE CC_in st_id_mask  || '%' TH EN
  606  
  607           BE GIN
  608  
  609              SELECT     Id
  610              INTO       VN_std_ins titution_i d
  611              FROM       Std_Instit ution
  612              WHERE      Stationnum ber = SUBS TR(I_addr_ rec.Record _created_b y,
  613                                                  6,
  614                                                  LENGTH( I_addr_rec .Record_cr eated_by)- 5);
  615  
  616              VB_update_ row := TRU E;
  617              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  618  
  619           EX CEPTION
  620  
  621              WHEN NO_DA TA_FOUND T HEN
  622  
  623                NULL;
  624  
  625              WHEN OTHER S THEN
  626  
  627                VB_error  := TRUE;
  628                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  629  
  630                VD_log_d ate := SYS DATE;
  631                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  632                                            PD _job_error _date  =>  VD_log_dat e,
  633                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  634                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Record_ created_by .'
  635                                                                           || '  Std_insti tution_id:  '
  636                                                                           || S UBSTR(I_ad dr_rec.Rec ord_create d_by,6,LEN GTH(I_addr _rec.Recor d_created_ by)-5)
  637                                                                           || ' .'
  638                                                                           || S QLERRM,1,2 000),
  639                                            PD _date1 =>  VD_rec_gro up_date,
  640                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  641                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  642  
  643           EN D;
  644  
  645         END  IF;
  646  
  647   --   If st ill no ins titution_i d, try for  instituti on_id from  address h istory
  648  
  649         IF N OT VB_erro r
  650          AND  VN_std_in stitution_ id IS NULL  THEN
  651  
  652           BE GIN
  653  
  654              SELECT     A1.Std_ins titution_i d
  655              INTO       VN_std_ins titution_i d
  656              FROM       ADR.Addres s_H A1
  657              WHERE      A1.Person_ id = I_add r_rec.Pers on_id -- N o index on  Address_i d, Person_ id is next  best thin g
  658              AND        A1.Address _h_id =
  659                           (SELECT     MAX(A2. Address_h_ id)
  660                            FROM       ADR.Add ress_H A2
  661                            WHERE      A2.Pers on_id = I_ addr_rec.P erson_id - - No index  on Addres s_id, Pers on_id is n ext best t hing
  662                            AND        A2.Addr ess_Id = I _addr_rec. Address_id
  663                            AND        A2.Std_ institutio n_id IS NO T NULL
  664                            AND        A2.Tran saction_ty pe_code !=  'D');
  665  
  666              VB_update_ row := TRU E;
  667              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  668  
  669           EX CEPTION
  670  
  671              WHEN NO_DA TA_FOUND T HEN
  672  
  673                NULL;
  674  
  675              WHEN OTHER S THEN
  676  
  677                VB_error  := TRUE;
  678                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  679  
  680                VD_log_d ate := SYS DATE;
  681                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  682                                            PD _job_error _date  =>  VD_log_dat e,
  683                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  684                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id fr om Address _H table.'
  685                                                                           || S QLERRM,1,2 000),
  686                                            PD _date1 =>  VD_rec_gro up_date,
  687                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  688                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  689  
  690           EN D;
  691  
  692         END  IF;
  693  
  694   --   If st ill no ins titution_i d, try for  instituti on_id from  merged pe rson addre ss history
  695  
  696         IF N OT VB_erro r
  697          AND  VN_std_in stitution_ id IS NULL  THEN
  698  
  699           BE GIN
  700  
  701              SELECT     AH.Std_ins titution_i d
  702              INTO       VN_std_ins titution_i d
  703              FROM       ADR.Person _Merge PM,
  704                         ADR.Addres s_H AH
  705              WHERE      PM.Primary _person_id  = I_addr_ rec.Person _id
  706              AND        AH.Address _h_id =
  707                         (SELECT     MAX(AH2.A ddress_h_i d)
  708                          FROM       ADR.Addre ss_H AH2
  709                          WHERE      AH2.Perso n_id = PM. Deprecated _person_id
  710                          AND        AH2.Std_a ddresstype _id = CC_t emp_addr_i d
  711                          AND        AH2.Std_i nstitution _id IS NOT  NULL);
  712  
  713              VB_update_ row := TRU E;
  714              VN_inst_id _upd_count  := VN_ins t_id_upd_c ount + 1;
  715  
  716           EX CEPTION
  717  
  718              WHEN NO_DA TA_FOUND T HEN
  719  
  720                NULL;
  721  
  722              WHEN OTHER S THEN
  723  
  724                VB_error  := TRUE;
  725                VN_error _recs_coun t := VN_er ror_recs_c ount + 1;
  726  
  727                VD_log_d ate := SYS DATE;
  728                ADRMGT.J ob_Process _Err_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  729                                            PD _job_error _date  =>  VD_log_dat e,
  730                                            PC _job_error _code => S UBSTR(SQLC ODE,1,60),
  731                                            PC _job_error _message = > SUBSTR(' Unknown er ror while  fetching S td_institu tion_id '
  732                                                                           ||'f rom merged  person Ad dress_H ta ble.'
  733                                                                           || S QLERRM,1,2 000),
  734                                            PD _date1 =>  VD_rec_gro up_date,
  735                                            PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  736                                            PN _numeric1  => I_addr_ rec.Addres s_id);
  737  
  738           EN D;
  739  
  740         END  IF;
  741  
  742   --   If st ill no ins titution_i d, it's to ast. Write  an error.
  743  
  744  
  745         IF N OT VB_erro r
  746          AND  VN_std_in stitution_ id IS NULL  THEN
  747  
  748           VN _no_inst_i d_count :=  VN_no_ins t_id_count  + 1;
  749  
  750           VD _log_date  := SYSDATE ;
  751           AD RMGT.Job_P rocess_Err _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  752                                        PD_job _error_dat e  => VD_l og_date,
  753                                        PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  754                                        PC_job _error_mes sage => SU BSTR('No i nstitution  ID found  for this a ddress row .',1,2000) ,
  755                                        PD_dat e1 => VD_r ec_group_d ate,
  756                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5),
  757                                        PN_num eric1 => I _addr_rec. Address_id );
  758  
  759         END  IF;
  760  
  761       END IF ;
  762  
  763       IF VB_ update_row  THEN
  764  
  765         BEGI N
  766  
  767           UP DATE    AD R.Address
  768           SE T       Ad dress_chan ge_src_typ e_id = VN_ addr_chg_s rc_type_id ,
  769                      St d_institut ion_id = V N_std_inst itution_id ,
  770                      Re cord_modif ied_by = ' ADRCQ00001 162',
  771                      Re cord_modif ied_date =  SYSDATE,
  772                      Re cord_modif ied_count  = Record_m odified_co unt + 1
  773           WH ERE     Ad dress_id =  I_addr_re c.Address_ id;
  774  
  775           CO MMIT;
  776  
  777         EXCE PTION
  778  
  779           WH EN OTHERS  THEN
  780  
  781              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  782  
  783              ROLLBACK;
  784  
  785              VD_log_dat e := SYSDA TE;
  786              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  787                                          PD_j ob_error_d ate  => VD _log_date,
  788                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  789                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while up dating ADR .Address r ow.'
  790                                                                         || SQL ERRM,1,200 0),
  791                                          PD_d ate1 => VD _rec_group _date,
  792                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255),
  793                                          PN_n umeric1 =>  I_addr_re c.Address_ id);
  794  
  795         END;
  796  
  797       END IF ;
  798  
  799     END LOOP ;
  800  
  801   -- Process  completio n informat ion
  802  
  803     VD_log_d ate := SYS DATE;
  804     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  805                                 PD _job_log_d ate => VD_ log_date,
  806                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  807                                 PD _date1 =>  VD_rec_gro up_date,
  808                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  809                                 PN _numeric2  => VN_tota l_recs_cou nt,
  810                                 PC _text2 =>  SUBSTR('Te mp address es reviewe d',1,255)) ;
  811  
  812     VD_log_d ate := SYS DATE;
  813     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  814                                 PD _job_log_d ate => VD_ log_date,
  815                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  816                                 PD _date1 =>  VD_rec_gro up_date,
  817                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  818                                 PN _numeric2  => VN_src_ type_upd_c ount,
  819                                 PC _text2 =>  SUBSTR('Ch ange sourc e types up dated',1,2 55));
  820  
  821     VD_log_d ate := SYS DATE;
  822     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  823                                 PD _job_log_d ate => VD_ log_date,
  824                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  825                                 PD _date1 =>  VD_rec_gro up_date,
  826                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  827                                 PN _numeric2  => VN_inst _id_upd_co unt,
  828                                 PC _text2 =>  SUBSTR('In stitution  IDs update d',1,255)) ;
  829  
  830     VD_log_d ate := SYS DATE;
  831     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  832                                 PD _job_log_d ate => VD_ log_date,
  833                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  834                                 PD _date1 =>  VD_rec_gro up_date,
  835                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  836                                 PN _numeric2  => VN_no_i nst_id_cou nt,
  837                                 PC _text2 =>  SUBSTR('In stitution  IDs not up dated',1,2 55));
  838  
  839     VD_log_d ate := SYS DATE;
  840     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  841                                 PD _job_log_d ate => VD_ log_date,
  842                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Stati stics',1,6 0),
  843                                 PD _date1 =>  VD_rec_gro up_date,
  844                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255),
  845                                 PN _numeric2  => VN_erro r_recs_cou nt,
  846                                 PC _text2 =>  SUBSTR('** *Errors up dating add ress rows* **',1,255) );
  847  
  848     VD_proce ss_end_dat e := SYSDA TE;
  849     VC_proce ss_duratio n := LTRIM (TO_CHAR(T RUNC((VD_p rocess_end _date - VD _process_s tart_date) *24),'00') ) || ' Hrs  '
  850                              || LT RIM(TO_CHA R(TRUNC((( (VD_proces s_end_date  - VD_proc ess_start_ date)*24)-
  851                                 TR UNC(((VD_p rocess_end _date - VD _process_s tart_date) *24))) * 6 0),'00'))  || ' Mins  '
  852                              || LT RIM(TO_CHA R(TRUNC((( (VD_proces s_end_date  - VD_proc ess_start_ date)*24*6 0)-
  853                                 TR UNC(((VD_p rocess_end _date - VD _process_s tart_date) *24*60)))  * 60),'00' )) || ' Se cs';
  854  
  855     VD_log_d ate := SYS DATE;
  856     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  857                                 PD _job_log_d ate => VD_ log_date,
  858                                 PC _job_statu s => SUBST R('SUCCESS      - Pro cessing Co mpleted',1 ,60),
  859                                 PC _job_log_m essage =>  SUBSTR('Pr ocessing T ime: ' ||  VC_process _duration, 1,2000),
  860                                 PD _date1 =>  VD_rec_gro up_date,
  861                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  862  
  863   EXCEPTION
  864  
  865     WHEN OTH ERS THEN
  866  
  867       ROLLBA CK;
  868  
  869       VD_log _date := S YSDATE;
  870       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  871                                    PD_job_err or_date  = > VD_log_d ate,
  872                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  873                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Adr_Addres s_Z05_Upda te_Sp.'
  874                                                                  ||  SQLERRM,1 ,2000),
  875                                    PD_date1 = > VD_rec_g roup_date,
  876                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  877  
  878       VD_log _date := S YSDATE;
  879       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  880                                    PD_job_log _date => V D_log_date ,
  881                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  882                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  883                                    PD_date1 = > VD_rec_g roup_date,
  884                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  885  
  886   END Adr_Ad dress_Z05_ Update_Sp;
  887   /
  888   DROP PROCE DURE ADR.A DR_DELETE_ ADDRESS_SP ;
  889  
  890   CREATE OR  REPLACE PR OCEDURE AD R.Adr_dele te_address _Sp
  891     (PB_run_ standalone
  892        IN      BOOLEAN  DEFAULT FA LSE,
  893      PB_allo w_rpt_inst
  894        IN      BOOLEAN  DEFAULT FA LSE
  895     )
  896   IS
  897  
  898   -- ******* ********** ********** ********** ********** ********** ********** ********
  899   -- * Proce dure: Adr_ delete_add ress_Sp
  900   -- *
  901   -- *  Temp orary  Add ress table  bug fix t o be run n ightly.
  902   -- *
  903   -- *  - Se lects all  Address re cords wher e the INSU RANCE_ID S TD_ADDRESS TYPE_ID
  904   -- *     i s NULL
  905   -- *
  906   -- *
  907   -- * Param eters:
  908   -- *
  909   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  910   -- *                         Def ault: FALS E
  911   -- *
  912   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  913   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  914   -- *                         Def ault: FALS E
  915   -- *
  916   -- ******* ********** ********** ********** ********** ********** ********** ********
  917   --
  918   -- ======= ========== ========== ========== ========== ========== ========== ========
  919   -- Date         Autho r                             De scription
  920   -- ======= ========== ========== ========== ========== ========== ========== ========
  921   -- 11/30/2 010  Brend a Caningto n       Cr eated for  CCR 1252.
  922  
  923   --
  924   -- ======= ========== ========== ========== ========== ========== ========== ========
  925  
  926   -- CONSTAN TS
  927  
  928  
  929   -- VARIABL ES
  930  
  931     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  932     VB_error                                B OOLEAN :=  FALSE;
  933     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  934     VB_updat e_row                          B OOLEAN :=  FALSE;
  935  
  936     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  937     VC_insta nce_name                       V ARCHAR2(16 );
  938     VC_proce ss_duratio n                   V ARCHAR2(25 );
  939     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  Delete Add ress Recor ds';
  940     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  941  
  942     VD_log_d ate                            D ATE;
  943     VD_proce ss_end_dat e                   D ATE;
  944     VD_proce ss_start_d ate                 D ATE;
  945     VD_rec_g roup_date                      D ATE;
  946  
  947     VN_addr_ chg_src_ty pe_id               N UMBER := 0 ;
  948     VN_job_c ount                           N UMBER := 0 ;
  949     VN_job_n umber                          N UMBER := 0 ;
  950     VN_inst_ id_upd_cou nt                  N UMBER := 0 ;
  951     VN_error _recs_coun t                   N UMBER := 0 ;
  952     VN_no_in st_id_coun t                   N UMBER := 0 ;
  953     VN_rec_c ount                           N UMBER := 0 ;
  954     VN_src_t ype_upd_co unt                 N UMBER := 0 ;
  955     VN_std_i nstitution _id                 N UMBER := 0 ;
  956     VN_total _recs_coun t                   N UMBER := 0 ;
  957     sql_stmt                                v archar2(50 0);
  958  
  959   -- CURSORS
  960  
  961   CURSOR my_ del_record s  IS
  962        SELEC T A.ADDRES S_ID
  963        FROM       ADR.A ddress A
  964       WHERE      A.STD_ ADDRESSTYP E_ID IS NU LL
  965       AND
  966                       A .INSURANCE _ID IS NUL L;
  967  
  968   -- ******* ********** ********** ********** ********** ********** ********** *******
  969   -- *
  970   -- *  MAIN  PROCEDURE :
  971   -- *
  972   -- *    AD R.Adr_Addr ess_Z05_Up date_Sp
  973   -- *
  974   -- ******* ********** ********** ********** ********** ********** ********** *******
  975  
  976   BEGIN
  977  
  978     VD_rec_g roup_date  := TRUNC(S YSDATE);
  979  
  980     VD_log_d ate := SYS DATE;
  981     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  982                                 PD _job_log_d ate => VD_ log_date,
  983                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  984                                 PD _date1 =>  VD_rec_gro up_date,
  985                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  986  
  987   -- ******* ********** ********** ********** ********** ********** ********** ********
  988   -- *
  989   -- * Valid ate input  parameters
  990   -- *
  991   -- ******* ********** ********** ********** ********** ********** ********** ********
  992  
  993   -- * Check  run stand alone flag
  994  
  995     IF PB_ru n_standalo ne IS NULL
  996      OR NOT  PB_run_sta ndalone TH EN
  997  
  998       VB_run _standalon e := FALSE ;
  999       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1000  
  1001     ELSE
  1002  
  1003       VB_run _standalon e := TRUE;
  1004       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1005  
  1006     END IF;
  1007  
  1008   -- * Check  run on re port insta nce flag
  1009  
  1010     IF PB_al low_rpt_in st IS NULL
  1011      OR NOT  PB_allow_r pt_inst TH EN
  1012  
  1013       VB_all ow_rpt_ins t := FALSE ;
  1014       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1015  
  1016     ELSE
  1017  
  1018       VB_all ow_rpt_ins t := TRUE;
  1019       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1020  
  1021     END IF;
  1022  
  1023     VD_log_d ate := SYS DATE;
  1024     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  1025                                 PD _job_log_d ate => VD_ log_date,
  1026                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  1027                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  1028                                                              || ' R un standal one: ' ||  VC_run_sta ndalone
  1029                                                              || ' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  1030                                 PD _date1 =>  VD_rec_gro up_date,
  1031                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1032  
  1033   -- ******* ********** ********** ********** ********** ********** ********** ********
  1034   -- *
  1035   -- * Check  to see if  process i s running  on a repor ting datab ase.
  1036   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  1037   -- *
  1038   -- ******* ********** ********** ********** ********** ********** ********** ********
  1039  
  1040     IF NOT V B_allow_rp t_inst THE N
  1041  
  1042       BEGIN
  1043  
  1044         VD_l og_date :=  SYSDATE;
  1045         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1046                                      PD_job_l og_date =>  VD_log_da te,
  1047                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  1048                                      PD_date1  => VD_rec _group_dat e,
  1049                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1050  
  1051         SELE CT    Inst ance_name
  1052         INTO       VC_i nstance_na me
  1053         FROM       V$in stance;
  1054  
  1055         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  1056  
  1057           VD _log_date  := SYSDATE ;
  1058           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1059                                        PD_job _log_date  => VD_log_ date,
  1060                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  1061                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  1062                                                                     || VC_inst ance_name
  1063                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  1064                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  1065                                        PD_dat e1 => VD_r ec_group_d ate,
  1066                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1067  
  1068           RE TURN;
  1069  
  1070         END  IF;
  1071  
  1072       EXCEPT ION
  1073  
  1074         WHEN  OTHERS TH EN
  1075  
  1076           VD _log_date  := SYSDATE ;
  1077           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1078                                        PD_job _log_date  => VD_log_ date,
  1079                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  1080                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  1081                                        PD_dat e1 => VD_r ec_group_d ate,
  1082                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1083  
  1084           RE TURN;
  1085  
  1086       END;
  1087  
  1088     END IF;
  1089  
  1090   -- ******* ********** ********** ********** ********** ********** ********** ********
  1091   -- *
  1092   -- * Check  to see if  the job h as already  run today
  1093   -- *  - If  running i n stand-al one mode,  don't chec k.
  1094   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  1095   -- *
  1096   -- ******* ********** ********** ********** ********** ********** ********** ********
  1097  
  1098     IF NOT P B_run_stan dalone THE N
  1099  
  1100       BEGIN
  1101  
  1102         SELE CT    COUN T(*)
  1103         INTO       VN_r ec_count
  1104         FROM       ADRM GT.Job_Pro cess_Logs
  1105         WHER E     Job_ name = VC_ process_na me
  1106         AND        Date 1 = VD_rec _group_dat e
  1107         AND        Job_ status = ' SUCCESS      - Proces sing Compl eted';
  1108  
  1109         IF V N_rec_coun t > 0 THEN
  1110  
  1111           VD _log_date  := SYSDATE ;
  1112           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1113                                        PD_job _log_date  => VD_log_ date,
  1114                                        PC_job _status =>  SUBSTR('I NFORMATION  - This da te has alr eady been  processed' ,1,60),
  1115                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  1116                                        PD_dat e1 => VD_r ec_group_d ate,
  1117                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1118  
  1119           RE TURN;
  1120  
  1121         END  IF;
  1122  
  1123       EXCEPT ION
  1124  
  1125         WHEN  OTHERS TH EN
  1126  
  1127           VD _log_date  := SYSDATE ;
  1128           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  1129                                        PD_job _log_date  => VD_log_ date,
  1130                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  1131                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  1132                                        PD_dat e1 => VD_r ec_group_d ate,
  1133                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1134  
  1135           RE TURN;
  1136  
  1137       END;
  1138  
  1139     END IF;
  1140  
  1141   -- ******* ********** ********** ********** ********** ********** ********** ********
  1142   -- *
  1143   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  1144   -- *  - If  yes, then  end this  job.
  1145   -- *
  1146   -- ******* ********** ********** ********** ********** ********** ********** ********
  1147  
  1148     SELECT C OUNT(*)
  1149     INTO   V N_job_coun t
  1150     FROM   S YS.DBA_JOB S_RUNNING  R,
  1151            S YS.DBA_JOB S J
  1152     WHERE  J .JOB = R.J OB
  1153     AND    U PPER(J.WHA T) LIKE '% ADR_DELETE _ADDRESS_S P%';
  1154  
  1155     IF VN_jo b_count >  1 THEN
  1156  
  1157       VD_log _date := S YSDATE;
  1158       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1159                                    PD_job_log _date => V D_log_date ,
  1160                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  1161                                    PC_job_log _message = > SUBSTR(' There is a nother add ress Delet e job runn ing.'
  1162                                                                || '  Exiting j ob without  running.' ,1,2000),
  1163                                    PD_date1 = > VD_rec_g roup_date,
  1164                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1165  
  1166       RETURN ;
  1167  
  1168     ELSE
  1169  
  1170       IF VB_ run_standa lone THEN
  1171  
  1172         VD_l og_date :=  SYSDATE;
  1173         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1174                                      PD_job_l og_date =>  VD_log_da te,
  1175                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  1176                                      PD_date1  => VD_rec _group_dat e,
  1177                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1178  
  1179       ELSE
  1180  
  1181         SELE CT    MAX( J.Job)
  1182         INTO       VN_j ob_number
  1183         FROM       SYS. DBA_JOBS_R UNNING R,
  1184                    SYS. DBA_JOBS J
  1185         WHER E     J.JO B = R.JOB
  1186         AND        UPPE R(J.WHAT)  LIKE '%ADR _DELETE_AD DRESS_SP%' ;
  1187  
  1188         VD_l og_date :=  SYSDATE;
  1189         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1190                                      PD_job_l og_date =>  VD_log_da te,
  1191                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  1192                                      PD_date1  => VD_rec _group_dat e,
  1193                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1194  
  1195       END IF ;
  1196  
  1197     END IF;
  1198  
  1199   -- ******* ********** ********** ********** ********** ********** ********** ********
  1200   -- *
  1201   -- * Main  processing  loop
  1202   -- *
  1203   -- ******* ********** ********** ********** ********** ********** ********** ********
  1204  
  1205     VN_error _recs_coun t := 0;
  1206     VN_inst_ id_upd_cou nt := 0;
  1207     VN_no_in st_id_coun t := 0;
  1208     VN_src_t ype_upd_co unt := 0;
  1209     VN_total _recs_coun t := 0;
  1210  
  1211     VD_proce ss_start_d ate := SYS DATE;
  1212  
  1213   -- Remove  all proces s logs ove r 14 days  old
  1214  
  1215     BEGIN
  1216  
  1217       VD_log _date := S YSDATE;
  1218       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1219                                    PD_job_log _date => V D_log_date ,
  1220                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  1221                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  1222                                    PD_date1 = > VD_rec_g roup_date,
  1223                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1224  
  1225       DELETE
  1226       FROM       ADRMGT .Job_Proce ss_Logs
  1227       WHERE      Job_na me = VC_pr ocess_name
  1228       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  1229  
  1230       COMMIT ;
  1231  
  1232       VD_log _date := S YSDATE;
  1233       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1234                                    PD_job_log _date => V D_log_date ,
  1235                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  1236                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  1237                                    PD_date1 = > VD_rec_g roup_date,
  1238                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1239  
  1240  
  1241     EXCEPTIO N
  1242  
  1243       WHEN N O_DATA_FOU ND THEN
  1244  
  1245         NULL ;
  1246  
  1247       WHEN O THERS THEN
  1248  
  1249         VD_l og_date :=  SYSDATE;
  1250         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1251                                      PD_job_e rror_date   => VD_log _date,
  1252                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1253                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  1254                                                                        || SQLE RRM,1,2000 ),
  1255                                      PD_date1  => VD_rec _group_dat e,
  1256                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1257  
  1258     END;
  1259  
  1260   -- Remove  all proces s errors o ver 14 day s old
  1261  
  1262     BEGIN
  1263  
  1264       VD_log _date := S YSDATE;
  1265       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1266                                    PD_job_log _date => V D_log_date ,
  1267                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  1268                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over 1 4 days old ',1,2000),
  1269                                    PD_date1 = > VD_rec_g roup_date,
  1270                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1271  
  1272       DELETE
  1273       FROM       ADRMGT .Job_Proce ss_Errs
  1274       WHERE      Job_na me = VC_pr ocess_name
  1275       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  1276  
  1277       COMMIT ;
  1278  
  1279       VD_log _date := S YSDATE;
  1280       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  1281                                    PD_job_log _date => V D_log_date ,
  1282                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  1283                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over 14  days old' ,1,2000),
  1284                                    PD_date1 = > VD_rec_g roup_date,
  1285                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1286  
  1287     EXCEPTIO N
  1288  
  1289       WHEN N O_DATA_FOU ND THEN
  1290  
  1291         NULL ;
  1292  
  1293       WHEN O THERS THEN
  1294  
  1295         VD_l og_date :=  SYSDATE;
  1296         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  1297                                      PD_job_e rror_date   => VD_log _date,
  1298                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  1299                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess error s. '
  1300                                                                        || SQLE RRM,1,2000 ),
  1301                                      PD_date1  => VD_rec _group_dat e,
  1302                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1303  
  1304     END;
  1305  
  1306   -- Main re cord curso r logic
  1307   BEGIN
  1308       FOR th is_del_rec ords in my _del_recor ds LOOP
  1309                sql_stmt  := 'DELET E     FROM       ADR. Address A  WHERE A.AD DRESS_ID =  ' || this _del_recor ds.ADDRESS _ID ;
  1310                 EXECUTE  IMMEDIATE  sql_stmt;
  1311                 COMMIT;
  1312              END LOOP;
  1313  
  1314  
  1315  
  1316           EX CEPTION
  1317           WH EN NO_DATA _FOUND THE N
  1318                 NULL;
  1319           WH EN OTHERS  THEN
  1320              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  1321              ROLLBACK;
  1322              VD_log_dat e := SYSDA TE;
  1323              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  1324                                          PD_j ob_error_d ate  => VD _log_date,
  1325                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  1326                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  1327                                                                         || SQL ERRM,1,200 0),
  1328                                          PD_d ate1 => VD _rec_group _date,
  1329                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  1330                                          );
  1331  
  1332         END;
  1333  
  1334  
  1335  
  1336   END Adr_de lete_addre ss_Sp;
  1337   /
  1338   DROP PROCE DURE ADR.A DR_INCOME_ TEST_FIX_S P;
  1339  
  1340   CREATE OR  REPLACE PR OCEDURE AD R.Adr_Inco me_Test_Fi x_Sp
  1341     (p_run_s tandalone
  1342        IN      BOOLEAN  DEFAULT FA LSE,
  1343      p_allow _rpt_inst
  1344        IN      BOOLEAN  DEFAULT FA LSE
  1345     )
  1346   IS
  1347  
  1348   -- ******* ********** ********** ********** ********** ********** ********** ********
  1349   -- * Proce dure: Adr_ Income_Tes t_Fix_Sp
  1350   -- *
  1351   -- *  Fix  data in In come_Test  table from  applicati on bug to  be run nig htly.
  1352   -- *
  1353   -- *  - Se lects futu re Income_ Test table  records f or individ uals with  multiple i ncome_test  records a nd multipl e records  where the  income_tes t_type_id  is the sam e
  1354   --  *  And   the futu re_test_fl ag = 1
  1355   -- *    An d there is  also an I ncome_Test  table rec ord Wherfu ture_test_ flag = 0
  1356   -- *  -And   there is  a record  where the  income_tes t_effectiv e_date = M AX(income_ test_effec tive_date)
  1357   -- *   And  there is  a record w here the i ncome_year  is greate r than the  income_ye ar selecte d where th e future_t est_flag =  1
  1358   -- *
  1359   -- *  - It  then sele cts the cu rrent year  records f or each in dividual i n the futu re Income_ Test query
  1360   -- *    Wh ere future _test_flag  = 0
  1361   -- *
  1362   -- *  It t hen update s income_t est with c orrect inf ormation.
  1363   -- *
  1364   -- * Param eters:
  1365   -- *
  1366   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  1367   -- *                         Def ault: FALS E
  1368   -- *
  1369   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  1370   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  1371   -- *                         Def ault: FALS E
  1372   -- *
  1373   -- ******* ********** ********** ********** ********** ********** ********** ********
  1374   --
  1375   -- ======= ========== ========== ========== ========== ========== ========== ========
  1376   -- Date         Autho r             Descrip tion
  1377   -- ======= ========== ========== ========== ========== ========== ========== ========
  1378   -- 06/22/2 010  Craig  Wood         Created  for CCR 1 173.
  1379   --
  1380   --
  1381   -- ======= ========== ========== ========== ========== ========== ========== ========
  1382  
  1383     CURSOR f utureyears cur
  1384      IS
  1385         SELE CT it1.inc ome_test_i d income_t est_idf, i t1.person_ id person_ idf,
  1386          it1 .income_ye ar income_ yearf,
  1387          it1 .income_te st_effecti ve_date in come_test_ effective_ datef,
  1388          it1 .income_te st_type_id
  1389     FROM inc ome_test i t1
  1390    WHERE it1 .future_te st_flag =  1
  1391      AND EXI STS (
  1392              SELECT it2 .income_ye ar
  1393                FROM inc ome_test i t2
  1394               WHERE it2 .future_te st_flag =  0
  1395                 AND it2 .income_te st_effecti ve_date =
  1396                         (SELECT MA X (it4.inc ome_test_e ffective_d ate)
  1397                            FROM in come_test  it4
  1398                           WHERE it 4.person_i d = it1.pe rson_id
  1399                             AND it 4.income_t est_type_i d = it1.in come_test_ type_id
  1400                             AND it 4.future_t est_flag =  0)
  1401                 AND it2 .person_id  = it1.per son_id
  1402                 AND it2 .income_te st_type_id  = it1.inc ome_test_t ype_id
  1403                 AND it2 .income_ye ar > it1.i ncome_year );
  1404  
  1405  
  1406      v_f_inc ome_test_i d                inco me_test.in come_test_ id%TYPE;
  1407      v_f_per son_id                      inco me_test.pe rson_id%TY PE;
  1408      v_f_inc ome_year                    inco me_test.in come_year% TYPE;
  1409      v_f_inc ome_test_e ffective_d ate   inco me_test.in come_test_ effective_ date%TYPE;
  1410      v_f_inc ome_test_t ype_id           inco me_test.in come_test_ type_id%TY PE;
  1411      v_c_inc ome_test_i d                inco me_test.in come_test_ id%TYPE;
  1412      v_c_per son_id                      inco me_test.pe rson_id%TY PE;
  1413      v_c_inc ome_year                    inco me_test.in come_year% TYPE;
  1414      v_c_inc ome_test_e ffective_d ate   inco me_test.in come_test_ effective_ date%TYPE;
  1415      v_incom e_test_eff ective_dat e     inco me_test.in come_test_ effective_ date%TYPE;
  1416      v_incom e_test_det ail_id           inco me_test_de tail.incom e_test_det ail_id%TYP E;
  1417      v_incom e_test_id                   inco me_test_de tail.incom e_test_det ail_id%TYP E;
  1418      v_incom e_test_typ e_id             inco me_test_de tail.incom e_test_id% TYPE;
  1419      v_test_ status_typ e_id             inco me_test_de tail.test_ status_typ e_id%TYPE;
  1420      v_test_ detmnd_sta tus_type_i d     inco me_test_de tail.test_ detmnd_sta tus_type_i d%TYPE;
  1421      v_incom e_test_las t_edited_d ate   inco me_test_de tail.incom e_test_las t_edited_d ate%TYPE;
  1422      v_incom e_test_com pleted_dat e     inco me_test_de tail.incom e_test_com pleted_dat e%TYPE;
  1423      v_incom e_test_exp iration_da te    inco me_test_de tail.incom e_test_exp iration_da te%TYPE;
  1424      v1_inco me_test_ef fective_da te    inco me_test_de tail.incom e_test_eff ective_dat e%TYPE;
  1425      v_incom e_test_sig ned_date         inco me_test_de tail.incom e_test_sig ned_date%T YPE;
  1426      vh_inco me_test_la st_edit_da te    inco me_test_de tail.incom e_test_las t_edited_d ate%TYPE;
  1427      vh_inco me_test_co mpleted_da te    inco me_test_de tail.incom e_test_com pleted_dat e%TYPE;
  1428      v_count                                           N UMBER;
  1429      v_debug                                          VA RCHAR2(200 0);
  1430  
  1431     v_allow_ rpt_inst                         BOOLEAN :=  FALSE;
  1432     v_run_st andalone                         BOOLEAN :=  FALSE;
  1433     v_instan ce_name                          VARCHAR2(1 6);
  1434     v_job_co unt                              NUMBER :=  0;
  1435     vc_allow _rpt_inst                        VARCHAR2(5 ) := NULL;
  1436     vc_run_s tandalone                        VARCHAR2(5 ) := NULL;
  1437     v_log_da te                               DATE;
  1438     v_rec_gr oup_date                         DATE;
  1439     v_proces s_name                           VARCHAR2(6 0) := 'ADR  Income Te st Fix';
  1440      CURSOR  detailcurs or
  1441      IS
  1442         SELE CT income_ test_detai l_id, inco me_test_id , income_t est_type_i d,
  1443                 test_st atus_type_ id, test_d etmnd_stat us_type_id ,
  1444                 income_ test_last_ edited_dat e, income_ test_compl eted_date,
  1445                 income_ test_expir ation_date , income_t est_effect ive_date,
  1446                 income_ test_signe d_date
  1447           FR OM income_ test_detai l
  1448          WHE RE income_ test_id =  v_f_income _test_id;
  1449  
  1450  
  1451  
  1452   BEGIN
  1453  
  1454   -- ******* ********** ********** ********** ********** ********** ********** ********
  1455   -- *
  1456   -- * Valid ate input  parameters
  1457   -- *
  1458   -- ******* ********** ********** ********** ********** ********** ********** ********
  1459  
  1460   -- * Check  run stand alone flag
  1461  
  1462     IF p_run _standalon e IS NULL
  1463      OR NOT  p_run_stan dalone THE N
  1464           v_ run_standa lone := FA LSE;
  1465           vc _run_stand alone := ' FALSE'; --  used for  log messag e, boolean  can't be  displayed
  1466     ELSE
  1467       v_run_ standalone  := TRUE;
  1468       vc_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1469     END IF;
  1470  
  1471   -- * Check  run on re port insta nce flag
  1472  
  1473     IF p_all ow_rpt_ins t IS NULL
  1474      OR NOT  p_allow_rp t_inst THE N
  1475       v_allo w_rpt_inst  := FALSE;
  1476       vc_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  1477     ELSE
  1478       v_allo w_rpt_inst  := TRUE;
  1479       vc_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  1480     END IF;
  1481     v_log_da te := SYSD ATE;
  1482     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  1483                                 PD _job_log_d ate => v_l og_date,
  1484                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cessing pa rameters f or this jo b',1,60),
  1485                                 PC _job_log_m essage =>  SUBSTR('Cu rrent job  parameters  - '
  1486                                                              || ' R un standal one: ' ||  vc_run_sta ndalone
  1487                                                              || ' R un on repo rting data bases: ' | | vc_allow _rpt_inst, 1,2000),
  1488                                 PD _date1 =>  v_rec_grou p_date,
  1489                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  1490   -- ******* ********** ********** ********** ********** ********** ********** ********
  1491   -- *
  1492   -- * Check  to see if  process i s running  on a repor ting datab ase.
  1493   -- *  - If  v_allow_r pt_inst is  FALSE, th en it's no t allowed.  End the j ob.
  1494   -- *
  1495   -- ******* ********** ********** ********** ********** ********** ********** ********
  1496       IF NOT  v_allow_r pt_inst TH EN
  1497           BE GIN
  1498                 v_log_d ate := SYS DATE;
  1499                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  1500                                      PD_job_l og_date =>  v_log_dat e,
  1501                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  1502                                      PD_date1  => v_rec_ group_date ,
  1503                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1504  
  1505                SELECT     Instance _name
  1506                INTO       v_instan ce_name
  1507                FROM       V$instan ce;
  1508                IF UPPER (SUBSTR(v_ instance_n ame,1,4))  = 'ADRR' T HEN
  1509                    v_lo g_date :=  SYSDATE;
  1510                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1511                                        PD_job _log_date  => v_log_d ate,
  1512                                        PC_job _status =>  SUBSTR('W ARNING      - Process ing Failed ',1,60),
  1513                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  1514                                                                     || v_insta nce_name
  1515                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  1516                                                                     || ' set p arameter p _allow_rpt _inst to T RUE and re submit the  job.',1,2 000),
  1517                                        PD_dat e1 => v_re c_group_da te,
  1518                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1519                    RETU RN;
  1520                 END IF;
  1521                 EXCEPTI ON
  1522                    WHEN  OTHERS TH EN
  1523                      v_ log_date : = SYSDATE;
  1524                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(v_pr ocess_name ,1,60),
  1525                                        PD_job _log_date  => v_log_d ate,
  1526                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  1527                                        PC_job _log_messa ge => SUBS TR('Termin ating scri pt.',1,200 0),
  1528                                        PD_dat e1 => v_re c_group_da te,
  1529                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  1530  
  1531                RETURN;
  1532                END;
  1533       END IF ;
  1534   -- ******* ********** ********** ********** ********** ********** ********** ********
  1535   -- *
  1536   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  1537   -- *  - If  yes, then  end this  job.
  1538   -- *
  1539   -- ******* ********** ********** ********** ********** ********** ********** ********
  1540  
  1541       SELECT  COUNT(*)
  1542       INTO    v_job_cou nt
  1543       FROM    SYS.DBA_J OBS_RUNNIN G R,
  1544            S YS.DBA_JOB S J
  1545      WHERE   J.JOB = R. JOB
  1546      AND     UPPER(J.WH AT) LIKE ' %ADR_INCOM E_TEST_FIX _SP%';
  1547       IF v_j ob_count >  1 THEN
  1548           BE GIN
  1549                v_log_da te := SYSD ATE;
  1550                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  1551                                    PD_job_log _date => v _log_date,
  1552                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  1553                                    PC_job_log _message = > SUBSTR(' There is a nother Inc ome Test F ix job run ning.'
  1554                                                                || '  Exiting j ob without  running.' ,1,2000),
  1555                                    PD_date1 = > v_rec_gr oup_date,
  1556                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1557  
  1558                RETURN;
  1559           EN D;
  1560       ELSE
  1561           IF  v_run_sta ndalone TH EN
  1562                v_log_da te := SYSD ATE;
  1563                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  1564                                      PD_job_l og_date =>  v_log_dat e,
  1565                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  1566                                      PD_date1  => v_rec_ group_date ,
  1567                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  1568           EN D IF;
  1569       END IF ;
  1570   -- ******* ********** ********** ********** ********** ********** ********** ********
  1571   -- *
  1572   -- * Main  processing  loop
  1573   -- *
  1574   -- ******* ********** ********** ********** ********** ********** ********** ********
  1575  
  1576  
  1577  
  1578  
  1579   -- Remove  all proces s logs ove r 14 days  old
  1580  
  1581     BEGIN
  1582  
  1583       v_log_ date := SY SDATE;
  1584       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(v_proces s_name,1,6 0),
  1585                                    PD_job_log _date => v _log_date,
  1586                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  1587                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over 14  days old', 1,2000),
  1588                                    PD_date1 = > v_rec_gr oup_date,
  1589                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1590  
  1591       DELETE
  1592       FROM       ADRMGT .Job_Proce ss_Logs
  1593       WHERE      Job_na me = v_pro cess_name
  1594       AND        Date1  < TRUNC(SY SDATE) - 1 4;
  1595  
  1596       COMMIT ;
  1597  
  1598       v_log_ date := SY SDATE;
  1599       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(v_proces s_name,1,6 0),
  1600                                    PD_job_log _date => v _log_date,
  1601                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  1602                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over 14 d ays old',1 ,2000),
  1603                                    PD_date1 = > v_rec_gr oup_date,
  1604                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1605  
  1606  
  1607     EXCEPTIO N
  1608  
  1609       WHEN N O_DATA_FOU ND THEN
  1610  
  1611         NULL ;
  1612  
  1613       WHEN O THERS THEN
  1614  
  1615         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1616                                    PD_job_log _date => v _log_date,
  1617                                    PC_job_sta tus => SUB STR('ERROR  - UNKOWN  EXCEPTION' ,1,60),
  1618                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1619                                    PD_date1 = > v_rec_gr oup_date,
  1620                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1621  
  1622     END;
  1623  
  1624       OPEN f utureyears cur;
  1625       LOOP
  1626         FETC H futureye arscur
  1627          INT O v_f_inco me_test_id , v_f_pers on_id, v_f _income_ye ar,
  1628                v_f_inco me_test_ef fective_da te, v_f_in come_test_ type_id;
  1629         EXIT  WHEN futu reyearscur %NOTFOUND;
  1630         v_de bug := '';
  1631         v_de bug := v_d ebug || 'S TEP1 for : ' || v_f_i ncome_test _id ;
  1632         v_lo g_date :=  SYSDATE;
  1633         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1634                                    PD_job_log _date => v _log_date,
  1635                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 1',1,6 0),
  1636                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1637                                    PD_date1 = > v_rec_gr oup_date,
  1638                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1639  
  1640   --find the  current t est for th is person
  1641     BEGIN
  1642       SELECT  income_te st_id, per son_id, in come_year,  income_te st_effecti ve_date
  1643         INTO  v_c_incom e_test_id,  v_c_perso n_id, v_c_ income_yea r,v_c_inco me_test_ef fective_da te
  1644         FROM  income_te st it2
  1645        WHERE  it2.incom e_test_eff ective_dat e =
  1646                       ( SELECT MAX  (income_t est_effect ive_date)
  1647                      FR OM income_ test
  1648                     WHE RE person_ id = v_f_p erson_id A ND future_ test_flag  = 0)
  1649            A ND it2.per son_id = v _f_person_ id AND it2 .future_te st_flag =  0;
  1650  
  1651            v _debug :=  'STEP2 for  :' || v_f _income_te st_id|| CH R(10) ||
  1652                                'SE LECT incom e_test_id,  person_id , income_y ear, incom e_test_eff ective_dat e'|| CHR(1 0) ||
  1653                                'IN TO v_c_inc ome_test_i d, v_c_per son_id, v_ c_income_y ear,v_c_in come_test_ effective_ date '|| C HR(10) ||
  1654                                ' F ROM income _test it2'  || CHR(10 ) ||
  1655                                ' W HERE it2.i ncome_test _effective _date ='||  CHR(10) | |
  1656                                '(S ELECT MAX  (income_te st_effecti ve_date)'  || CHR(10)  ||
  1657                                'FR OM income_ test' || C HR(10) ||
  1658                                ' W HERE perso n_id = v_f _person_id  AND futur e_test_fla g = 0)' ;
  1659  
  1660            v _log_date  := SYSDATE ;
  1661            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  SUBSTR(v_p rocess_nam e,1,60),
  1662                                    PD_job_log _date => v _log_date,
  1663                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 2',1,6 0),
  1664                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1665                                    PD_date1 = > v_rec_gr oup_date,
  1666                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1667   EXCEPTION
  1668  
  1669                WHEN TOO _MANY_ROWS  THEN
  1670                    SELE CT income_ test_id, p erson_id,  income_yea r, income_ test_effec tive_date
  1671                    INTO  v_c_incom e_test_id,  v_c_perso n_id, v_c_ income_yea r,v_c_inco me_test_ef fective_da te
  1672                    FROM  income_te st it2
  1673                    WHER E it2.inco me_test_ef fective_da te =
  1674                    (SEL ECT MAX (i ncome_test _effective _date)
  1675                    FROM  income_te st
  1676                    WHER E person_i d = v_f_pe rson_id AN D future_t est_flag =  0)
  1677                    AND  it2.income _year = TO _NUMBER (T O_CHAR (SY SDATE, 'YY YY')) - 1
  1678                    AND  it2.person _id = v_f_ person_id  AND it2.fu ture_test_ flag = 0;
  1679  
  1680                    v_de bug := 'ST EP2 for :'  || v_f_in come_test_ id|| CHR(1 0) ||
  1681                                'SE LECT incom e_test_id,  person_id , income_y ear, incom e_test_eff ective_dat e:'|| CHR( 10) ||
  1682                                'IN TO v_c_inc ome_test_i d, v_c_per son_id, v_ c_income_y ear,v_c_in come_test_ effective_ date '|| C HR(10) ||
  1683                                ' F ROM income _test it2'  || CHR(10 ) ||
  1684                                ' W HERE it2.i ncome_test _effective _date ='||  CHR(10) | |
  1685                                '(S ELECT MAX  (income_te st_effecti ve_date)'  || CHR(10)  ||
  1686                                'FR OM income_ test' || C HR(10) ||
  1687                                ' W HERE perso n_id = v_f _person_id  AND futur e_test_fla g = 0)' ||  CHR(10) | |
  1688                                ' A ND it2.inc ome_year =  TO_NUMBER  (TO_CHAR  (SYSDATE,  YYYY)) - 1  ' || CHR( 10) ||
  1689                                ' A ND it2.per son_id = v _f_person_ id AND it2 .future_te st_flag =  0';
  1690  
  1691                    v_lo g_date :=  SYSDATE;
  1692                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1693                                    PD_job_log _date => v _log_date,
  1694                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 2',1,6 0),
  1695                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1696                                    PD_date1 = > v_rec_gr oup_date,
  1697                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1698  
  1699         WHEN  OTHERS TH EN
  1700              v_debug :=  'UNKNOWN  EXCEPTION  :  ' ||CHR (10)||
  1701                     'er ror code i s : '||sql code || CH R(10)||
  1702                     'er ror code m essage is  : '||SQLER RM || CHR( 10)||
  1703                     'Ex ception oc cured for   v_c_incom e_test_id:  ' || v_c_ income_tes t_id|| CHR (10)||
  1704                                               'v_c_perso n_id:  '|| v_c_person _id ;
  1705            v _log_date  := SYSDATE ;
  1706                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1707                                    PD_job_log _date => v _log_date,
  1708                                    PC_job_sta tus => SUB STR('ERROR  - STEP 2' ,1,60),
  1709                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1710                                    PD_date1 = > v_rec_gr oup_date,
  1711                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1712  
  1713         END;
  1714  
  1715   -- we have  the cuure nt income_ year and f uture inco me year.
  1716         BEGI N
  1717            S ELECT DIST INCT incom e_test_eff ective_dat e
  1718               INTO v_in come_test_ effective_ date
  1719               FROM inco me_test_h
  1720              WHERE pers on_id = v_ f_person_i d
  1721                AND inco me_test_id  = v_f_inc ome_test_i d
  1722                AND futu re_test_fl ag = 0
  1723                AND ( re cord_modif ied_by <>  'CCR7649 D ataCleanup ' OR recor d_modified _by <> 'AD RCQ0000117 3');
  1724  
  1725  
  1726              v_debug :=  'STEP3 [i ncome_test _h]for : v _f_income_ test_id '| |v_f_incom e_test_id;
  1727               v_log_dat e := SYSDA TE;
  1728               ADRMGT.Jo b_Process_ Log_Sp(PC_ job_name = > SUBSTR(v _process_n ame,1,60),
  1729                                    PD_job_log _date => v _log_date,
  1730                                    PC_job_sta tus => SUB STR('INFOR MATION - S tep 3',1,6 0),
  1731                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1732                                    PD_date1 = > v_rec_gr oup_date,
  1733                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1734         EXCE PTION
  1735            W HEN NO_DAT A_FOUND
  1736            T HEN
  1737                v_debug  := 'NO DAT A FOUND IN  THE HISTO RY TABLE F OR : '
  1738                                      || v_f_i ncome_test _id || ' E xiting Loo p';
  1739                v_log_da te := SYSD ATE;
  1740                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  1741                                    PD_job_log _date => v _log_date,
  1742                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  1743                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1744                                    PD_date1 = > v_rec_gr oup_date,
  1745                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1746                GOTO  EN D_OF_LOOP;
  1747                WHEN TOO _MANY_ROWS  THEN
  1748  
  1749                    v_de bug := 'TO O MANY ROW S  :  '
  1750                                           ||  v_income_t est_detail _id ||' Ex iting Loop ';
  1751                    v_lo g_date :=  SYSDATE;
  1752                    ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1753                                    PD_job_log _date => v _log_date,
  1754                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 3',1,6 0),
  1755                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1756                                    PD_date1 = > v_rec_gr oup_date,
  1757                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1758                  GOTO   END_OF_LOO P;
  1759         END;
  1760  
  1761  
  1762  
  1763         --up date incom e test rec ord
  1764         UPDA TE income_ test
  1765            S ET future_ test_flag  = 0,
  1766                 income_ test_effec tive_date  = v_income _test_effe ctive_date ,
  1767                 cad_adj usted_ind  = NULL,
  1768                 record_ modified_b y = 'ADRCQ 00001173',
  1769                 record_ modified_d ate = SYSD ATE,
  1770                 record_ modified_c ount = rec ord_modifi ed_count +  1
  1771          WHE RE income_ test_id =  v_f_income _test_id
  1772            A ND future_ test_flag  = 1
  1773            A ND person_ id = v_f_p erson_id;
  1774  
  1775  
  1776         v_de bug := 'ST EP4 UPDATE  finished' ;
  1777         v_lo g_date :=  SYSDATE;
  1778         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(v_proc ess_name,1 ,60),
  1779                                    PD_job_log _date => v _log_date,
  1780                                    PC_job_sta tus => SUB STR('INFOR MATION - S TEP 4',1,6 0),
  1781                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1782                                    PD_date1 = > v_rec_gr oup_date,
  1783                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1784         --up date incom e test det ail table
  1785         OPEN  detailcur sor;
  1786  
  1787         LOOP
  1788            F ETCH detai lcursor
  1789              INTO v_inc ome_test_d etail_id,  v_income_t est_id,
  1790                   v_inc ome_test_t ype_id, v_ test_statu s_type_id,
  1791                   v_tes t_detmnd_s tatus_type _id, v_inc ome_test_l ast_edited _date,
  1792                   v_inc ome_test_c ompleted_d ate, v_inc ome_test_e xpiration_ date,
  1793                   v1_in come_test_ effective_ date, v_in come_test_ signed_dat e;
  1794  
  1795            E XIT WHEN d etailcurso r%NOTFOUND ;
  1796  
  1797  
  1798              v_debug :=      'Inne r cursor d ata :' ||  v_c_income _test_id
  1799                                       || '--'
  1800                                       || v_c_ person_id
  1801                                       || '--'
  1802                                       || v_c_ income_yea r
  1803                                       || '--'
  1804                                       || v_c_ income_tes t_effectiv e_date
  1805                                       || '--'
  1806                                       || v_f_ income_tes t_id
  1807                                       || '--'
  1808                                       || v_f_ person_id
  1809                                       || '--'
  1810                                       || v_f_ income_yea r
  1811                                       || '--'
  1812                                       || v_f_ income_tes t_effectiv e_date
  1813                                       || '--'
  1814                                       || v_in come_test_ completed_ date || '- -'
  1815                                       || v_in come_test_ effective_ date;
  1816  
  1817                 v_log_d ate := SYS DATE;
  1818                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  1819                                    PD_job_log _date => v _log_date,
  1820                                    PC_job_sta tus => SUB STR('INFOR MATION - I nner Curso r Data',1, 60),
  1821                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1822                                    PD_date1 = > v_rec_gr oup_date,
  1823                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1824  
  1825            B EGIN
  1826  
  1827                SELECT i ncome_test _last_edit ed_date,
  1828                       i ncome_test _completed _date
  1829                  INTO v h_income_t est_last_e dit_date,
  1830                       v h_income_t est_comple ted_date
  1831                  FROM i ncome_test _detail_h
  1832                 WHERE i ncome_test _id = v_in come_test_ id
  1833                   AND i ncome_test _detail_id  = v_incom e_test_det ail_id
  1834                   AND i ncome_test _type_id =  v_income_ test_type_ id
  1835                   AND i ncome_test _completed _date <> v _income_te st_complet ed_date
  1836                   AND r ecord_modi fied_by <>  'ADRCQ000 01173' ;
  1837  
  1838                 v_debug  := 'Fixin g the deta il :'
  1839                                        || v_i ncome_test _detail_id
  1840                                        || ' W ith date : '
  1841                                        || vh_ income_tes t_complete d_date;
  1842  
  1843                 v_log_d ate := SYS DATE;
  1844                 ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (v_process _name,1,60 ),
  1845                                    PD_job_log _date => v _log_date,
  1846                                    PC_job_sta tus => SUB STR('INFOR MATION - F IXING DETA IL',1,60),
  1847                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1848                                    PD_date1 = > v_rec_gr oup_date,
  1849                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1850  
  1851                UPDATE i ncome_test _detail
  1852                   SET i ncome_test _completed _date = vh _income_te st_complet ed_date,
  1853                       r ecord_modi fied_by =  'ADRCQ0000 1173',
  1854                       r ecord_modi fied_date  = SYSDATE,
  1855                       r ecord_modi fied_count  = record_ modified_c ount + 1
  1856                   WHERE  income_te st_detail_ id = v_inc ome_test_d etail_id;
  1857  
  1858  
  1859            E XCEPTION
  1860                WHEN NO_ DATA_FOUND
  1861                THEN
  1862                   v_deb ug := 'NO  DETAIL DAT A FOUND IN  THE HISTO RY TABLE F OR :'
  1863                              || v_ income_tes t_detail_i d;
  1864                   v_log _date := S YSDATE;
  1865                   ADRMG T.Job_Proc ess_Log_Sp (PC_job_na me => SUBS TR(v_proce ss_name,1, 60),
  1866                                    PD_job_log _date => v _log_date,
  1867                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  1868                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1869                                    PD_date1 = > v_rec_gr oup_date,
  1870                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1871                WHEN TOO _MANY_ROWS  THEN
  1872                      v_ debug := ' TOO MANY R OWS for in come_test_ detail :'
  1873                              || v_ income_tes t_detail_i d || 'v_de bug :' ||  v_debug;
  1874                      v_ log_date : = SYSDATE;
  1875                      AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(v_pr ocess_name ,1,60),
  1876                                    PD_job_log _date => v _log_date,
  1877                                    PC_job_sta tus => SUB STR('INFOR MATION - T OO MANY RO WS',1,60),
  1878                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1879                                    PD_date1 = > v_rec_gr oup_date,
  1880                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1881  
  1882            E ND;
  1883         END  LOOP;
  1884  
  1885         CLOS E detailcu rsor;
  1886  
  1887       <<END_ OF_LOOP>>
  1888              v_debug :=  'END OF L OOP: '
  1889                           ||  v_c_ income_tes t_id
  1890                                 ||  '--'
  1891                                 ||  v_c_perso n_id
  1892                                 ||  '--'
  1893                                 ||  v_c_incom e_year
  1894                                 ||  '--'
  1895                                 ||  v_c_incom e_test_eff ective_dat e
  1896                                 ||  '--'
  1897                                 ||  v_f_incom e_test_id
  1898                                 ||  '--'
  1899                                 ||  v_f_perso n_id
  1900                                 ||  '--'
  1901                                 ||  v_f_incom e_year
  1902                                 ||  '--'
  1903                                 ||  v_f_incom e_test_eff ective_dat e
  1904                                 ||  '--'
  1905                                 ||  v_income_ test_effec tive_date;
  1906                v_log_da te := SYSD ATE;
  1907                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  1908                                    PD_job_log _date => v _log_date,
  1909                                    PC_job_sta tus => SUB STR('INFOR MATION - < <END OF LO OP>>',1,60 ),
  1910                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1911                                    PD_date1 = > v_rec_gr oup_date,
  1912                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1913  
  1914      END LOO P;
  1915  
  1916      CLOSE f utureyears cur;
  1917  
  1918      --get t he final c ount
  1919    SELECT co unt(*) INT O v_count
  1920     FROM inc ome_test i t1
  1921    WHERE it1 .future_te st_flag =  1
  1922      AND EXI STS (
  1923              SELECT it2 .income_ye ar
  1924                FROM inc ome_test i t2
  1925               WHERE it2 .future_te st_flag =  0
  1926                 AND it2 .income_te st_effecti ve_date =
  1927                         (SELECT MA X (it4.inc ome_test_e ffective_d ate)
  1928                            FROM in come_test  it4
  1929                           WHERE it 4.person_i d = it1.pe rson_id
  1930                             AND it 4.income_t est_type_i d = it1.in come_test_ type_id
  1931                             AND it 4.future_t est_flag =  0)
  1932                 AND it2 .person_id  = it1.per son_id
  1933                 AND it2 .income_te st_type_id  = it1.inc ome_test_t ype_id
  1934                 AND it2 .income_ye ar > it1.i ncome_year );
  1935  
  1936          v_d ebug := 'C ompleted t he cleanup . Total Nu mber of re cords stil l need to  be fixed [ SHOULD BE  0]:'
  1937          ||  v_count;
  1938          v_l og_date :=  SYSDATE;
  1939          ADR MGT.Job_Pr ocess_Log_ Sp(PC_job_ name => SU BSTR(v_pro cess_name, 1,60),
  1940                                    PD_job_log _date => v _log_date,
  1941                                    PC_job_sta tus => SUB STR('INFOR MATION - C LEANUP COM PLETED',1, 60),
  1942                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1943                                    PD_date1 = > v_rec_gr oup_date,
  1944                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1945   EXCEPTION
  1946      WHEN NO _DATA_FOUN D
  1947      THEN
  1948                v_log_da te := SYSD ATE;
  1949                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( v_process_ name,1,60) ,
  1950                                    PD_job_log _date => v _log_date,
  1951                                    PC_job_sta tus => SUB STR('INFOR MATION - N O DATA FOU ND',1,60),
  1952                                    PC_job_log _message = > SUBSTR(' NO DATA FO UND',1,200 0),
  1953                                    PD_date1 = > v_rec_gr oup_date,
  1954                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1955      WHEN OT HERS
  1956      THEN
  1957         v_de bug := 'UN KNOWN EXCE PTION :' | |CHR(10)||
  1958                     'er ror code i s : '||sql code || CH R(10)||
  1959                     'er ror code m essage is  : '||SQLER RM || CHR( 10)||
  1960                     'Ex ception oc cured for   ' || v_c_ income_tes t_id
  1961                                 ||  '--'
  1962                                 ||  v_c_perso n_id
  1963                                 ||  '--'
  1964                                 ||  v_c_incom e_year
  1965                                 ||  '--'
  1966                                 ||  v_c_incom e_test_eff ective_dat e
  1967                                 ||  '--'
  1968                                 ||  v_f_incom e_test_id
  1969                                 ||  '--'
  1970                                 ||  v_f_perso n_id
  1971                                 ||  '--'
  1972                                 ||  v_f_incom e_year
  1973                                 ||  '--'
  1974                                 ||  v_f_incom e_test_eff ective_dat e
  1975                                 ||  '--'
  1976                                 ||  v_income_ test_effec tive_date;
  1977               v_log_dat e := SYSDA TE;
  1978               ADRMGT.Jo b_Process_ Log_Sp(PC_ job_name = > SUBSTR(v _process_n ame,1,60),
  1979                                    PD_job_log _date => v _log_date,
  1980                                    PC_job_sta tus => SUB STR('ERROR  - UNKOWN  EXCEPTION' ,1,60),
  1981                                    PC_job_log _message = > SUBSTR(v _debug,1,2 000),
  1982                                    PD_date1 = > v_rec_gr oup_date,
  1983                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  1984  
  1985   END;
  1986   /
  1987   DROP PROCE DURE ADR.B ATCH_SSN_P ROCESSED_S P;
  1988  
  1989   CREATE OR  REPLACE PR OCEDURE AD R.BATCH_SS N_PROCESSE D_SP
  1990   ( P_batch_ SSN_ADRToP rocess_DIR   IN VARCH AR2,
  1991     P_batch_ SSN_ToProc ess_DIR      IN VARCH AR2,
  1992     P_batch_ SSN_log_DI R            IN VARCH AR2,
  1993     P_batch_ SSN_err_DI R            IN VARCH AR2,
  1994     P_num_fi les_proces s            IN NUMBE R DEFAULT  2,
  1995     PB_run_s tandalone               IN BOOLE AN DEFAULT  FALSE,
  1996     PB_allow _rpt_inst               IN BOOLE AN DEFAULT  FALSE)
  1997  
  1998   -- ####### ########## ########## ########## ########## ########## ########## ########## ##
  1999   -- #  Desc ription: C CR 1674: P rocess a b acklog of  SSN Verifi catio
  2000   -- #
  2001   -- #   Usa ge:             Calle d by run_w rapper.sql
  2002   -- #   Inp ut Paramet ers:
  2003   -- #     1 ) None
  2004   -- #   Out put:
  2005   -- #     1 ) Terminal
  2006   -- #   Int ernal Scri pt Paramet ers:
  2007   -- #     1 ) None
  2008   -- #
  2009   -- #
  2010   -- ####### ########## ########## ########## ########## ########## ########## ########
  2011   -- # Chang e History
  2012   -- #
  2013   -- # DATE        User  Name          DESCRI PTION
  2014   -- # ----- ----- ---- ---------- --- ------ ---------- ---------- ---------- ---------- ---
  2015   -- # 06/10 /2012 Rich ard Do         Create d
  2016   -- #
  2017   -- #
  2018   -- ####### ########## ########## ########## ########## ########## ########## ########
  2019   AS
  2020  
  2021      CC_SSN_ VERIFICATI ON_EXT         CONSTA NT VARCHAR 2(20):= 'S SN_VERIFIC ATION_EXT' ;
  2022      CC_BATC H_SSN_LOG_ DIR            CONSTA NT VARCHAR 2(20):= 'B ATCH_SSN_L OG_DIR';
  2023      CC_BATC H_SSN_TOPR OCESS_DIR      CONSTA NT VARCHAR 2(25):= 'B ATCH_SSN_T OPROCESS_D IR';
  2024      CC_BATC H_SSN_ADRT OPROCESS_D IR  CONSTA NT VARCHAR 2(35):= 'B ATCH_SSN_A DRTOPROCES S_DIR';
  2025      CC_BATC H_SSN_ERR_ DIR            CONSTA NT VARCHAR 2(20):= 'B ATCH_SSN_E RR_DIR';
  2026      CC_JOB_ SSN_TERM_S OL             VARCHA R2(23) :=  'Job-SSNIt erimSoluti on';
  2027  
  2028      CC_MAX_ ROWS_COMMI T            CONSTANT  NUMBER :=  1000;
  2029  
  2030      V_File_ handle UTL _FILE.FILE _TYPE;
  2031      V_FILE_ Line VARCH AR2(1024);
  2032  
  2033      VD_log_ date           DATE;
  2034      VD_rec_ group_date     DATE;
  2035      VN_SSN_ VER_ID         NUMBER ;
  2036      VC_log_ step           VARCHA R2(500);
  2037      VN_job_ number         NUMBER  := 0;
  2038      VC_proc ess_name       VARCHA R2(30) :=  'ADR.BATCH _SSN_PROCE SSED_SP';
  2039  
  2040      VC_file _name          VARCHA R2(300);
  2041      VC_log_ file           VARCHA R2(200);
  2042      VC_erro r_file         VARCHA R2(200);
  2043      VC_pref ix_file        VARCHA R2(40):= ' SSA.r';
  2044      VN_vpid _value         ADR.pe rson.vpid_ value%TYPE ;
  2045  
  2046      VN_pers on_id                   ADR.pers on.person_ id%TYPE;
  2047      VN_erro r_count                 NUMBER;
  2048      VN_num_ rows_bePro cessed       NUMBER;
  2049      VN_num_ rows_proce ssed         NUMBER;
  2050      VD_days _deletion               NUMBER:=  14;
  2051      VN_rec_ count                   NUMBER:=  0;
  2052      VN_job_ count                   NUMBER:=  0;
  2053  
  2054      VB_allo w_rpt_inst              BOOLEAN  := FALSE;
  2055      VB_run_ standalone              BOOLEAN  := FALSE;
  2056  
  2057      VC_allo w_rpt_inst              VARCHAR2 (5) := NUL L;
  2058      VC_inst ance_name               VARCHAR2 (16);
  2059      VC_run_ standalone              VARCHAR2 (5) := NUL L;
  2060      t1                              INTEGER;
  2061      t2                              INTEGER;
  2062  
  2063  
  2064  
  2065      VC_ADRt oProcess_f ile_path     ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2066      VC_ToPr ocess_file _path        ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2067      VC_erro r_file_pat h            ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2068      VC_log_ file_path               ALL_DIRE CTORIES.DI RECTORY_PA TH%TYPE;
  2069      VC_TMP                          NUMBER : = 0;
  2070      VN_comm it_cnt                  NUMBER : = 0;
  2071  
  2072      VC_SQLS TMNT                    VARCHAR2 (2000);
  2073  
  2074      FILE_PA TH_ADRTOPR OCESS_NULL _E EXCEPTI ON;
  2075      FILE_PA TH_TOPROCE SS_NULL_E    EXCEPTIO N;
  2076      LOG_FIL E_PATH_NUL L_E          EXCEPTIO N;
  2077      ERROR_F ILE_PATH_N ULL_E        EXCEPTIO N;
  2078  
  2079      INVALID _SSN_ADRTO PROCESS_E    EXCEPTIO N;
  2080      INVALID _SSN_TOPRO CESS_E       EXCEPTIO N;
  2081      INVALID _SSN_LOG_E              EXCEPTIO N;
  2082      INVALID _SSN_ERR_E              EXCEPTIO N;
  2083  
  2084  
  2085   BEGIN
  2086  
  2087      VD_rec_ group_date  := TRUNC( SYSDATE);
  2088      t1 :=   DBMS_UTILI TY.get_tim e;
  2089  
  2090  
  2091      -- **** ********** ********** ********** ********** ********** ********** ********** *
  2092      -- *
  2093      -- * Va lidate inp ut paramet ers
  2094      -- *
  2095      -- **** ********** ********** ********** ********** ********** ********** ********** *
  2096  
  2097      VC_log_ step := 'C hecking in put parame ters.';
  2098  
  2099      IF NVL( P_batch_SS N_ADRToPro cess_DIR,' ***') != C C_BATCH_SS N_ADRTOPRO CESS_DIR T HEN
  2100  
  2101        RAISE  INVALID_S SN_ADRTOPR OCESS_E;
  2102  
  2103      ELSIF N VL(P_batch _SSN_ToPro cess_DIR,' ***') != C C_BATCH_SS N_TOPROCES S_DIR THEN
  2104  
  2105         RAIS E INVALID_ SSN_TOPROC ESS_E;
  2106  
  2107      ELSIF N VL(P_batch _SSN_log_D IR,'***')  != CC_BATC H_SSN_LOG_ DIR THEN
  2108  
  2109         RAIS E INVALID_ SSN_LOG_E;
  2110  
  2111      ELSIF N VL(P_batch _SSN_err_D IR,'***')  != CC_BATC H_SSN_ERR_ DIR THEN
  2112  
  2113         RAIS E INVALID_ SSN_ERR_E;
  2114  
  2115      END IF;
  2116  
  2117  
  2118      -- * Ch eck run st andalone f lag
  2119  
  2120      IF PB_r un_standal one IS NUL L
  2121         OR N OT PB_run_ standalone  THEN
  2122  
  2123          VB_ run_standa lone := FA LSE;
  2124          VC_ run_standa lone := 'F ALSE'; --  used for l og message , boolean  can't be d isplayed
  2125  
  2126      ELSE
  2127  
  2128          VB_ run_standa lone := TR UE;
  2129          VC_ run_standa lone := 'T RUE'; -- u sed for lo g message,  boolean c an't be di splayed
  2130  
  2131      END IF;
  2132  
  2133      -- * Ch eck run on  report in stance fla g
  2134  
  2135      IF PB_a llow_rpt_i nst IS NUL L
  2136         OR N OT PB_allo w_rpt_inst  THEN
  2137  
  2138          VB_ allow_rpt_ inst := FA LSE;
  2139          VC_ allow_rpt_ inst := 'F ALSE'; --  used for l og message , boolean  can't be d isplayed
  2140  
  2141      ELSE
  2142  
  2143          VB_ allow_rpt_ inst := TR UE;
  2144          VC_ allow_rpt_ inst := 'T RUE'; -- u sed for lo g message,  boolean c an't be di splayed
  2145  
  2146      END IF;
  2147  
  2148      VD_log_ date := SY SDATE;
  2149  
  2150  
  2151  
  2152      BEGIN
  2153  
  2154         -- * ********** ********** ********** ********** ********** ********** ********** ****
  2155         -- *
  2156         -- *  Check to  see if pro cess is ru nning on a  reporting  database.
  2157         -- *   - If VB_ allow_rpt_ inst is FA LSE, then  it's not a llowed. En d the job.
  2158         -- *
  2159         -- * ********** ********** ********** ********** ********** ********** ********** ****
  2160  
  2161         IF N OT VB_allo w_rpt_inst  THEN
  2162  
  2163            S ELECT    i nstance_na me
  2164            I NTO      V C_instance _name
  2165            F ROM      V $instance;
  2166  
  2167            I F UPPER(SU BSTR(VC_in stance_nam e,1,4)) =  'ADRR' THE N
  2168  
  2169                VD_log_d ate := SYS DATE;
  2170                ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( VC_process _name,1,60 ),
  2171                     PD_ job_log_da te => VD_l og_date,
  2172                     PC_ job_status  => SUBSTR ('WARNING      - Proc essing Fai led',1,60) ,
  2173                     PC_ job_log_me ssage => S UBSTR('Att empting to  run on a  reporting  instance.  Instance n ame: '
  2174                                                            || VC_in stance_nam e
  2175                            || '. T his job ha s been ter minated. T o run on a  reporting  instance, '
  2176                            || ' se t paramete r VB_allow _rpt_inst  to TRUE an d resubmit  the job.' ,1,2000),
  2177                     PD_ date1 => V D_rec_grou p_date,
  2178                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  2179  
  2180               RETURN;
  2181  
  2182            E ND IF;
  2183  
  2184         END  IF;
  2185  
  2186  
  2187         -- * ********** ********** ********** ********** ********** ********** ********** ****
  2188         -- *
  2189         -- *  Check to  see if the  job has a lready run  today
  2190         -- *   - If run ning in st and-alone  mode, don' t check.
  2191         -- *   - Otherw ise, if jo b has alre ady run to day, then  exit the j ob.
  2192         -- *
  2193         -- * ********** ********** ********** ********** ********** ********** ********** ****
  2194         IF N OT PB_run_ standalone  THEN
  2195  
  2196               SELECT     COUNT(*)
  2197                INTO       VN_rec_c ount
  2198               FROM       ADRMGT.Jo b_Process_ Logs
  2199               WHERE      Job_name  = VC_proce ss_name
  2200               AND        Date1 = V D_rec_grou p_date
  2201               AND        Job_statu s = 'SUCCE SS     - P rocessing  Completed' ;
  2202  
  2203               IF VN_rec _count > 0  THEN
  2204  
  2205                  VD_log _date := S YSDATE;
  2206                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(VC_proce ss_name,1, 60),
  2207                           PD_job_l og_date =>  VD_log_da te,
  2208                           PC_job_s tatus => S UBSTR('INF ORMATION -  This date  has alrea dy been pr ocessed',1 ,60),
  2209                           PC_job_l og_message  => SUBSTR ('Processi ng has alr eady compl eted for t his date.  Exiting to  job queue .',1,2000) ,
  2210                           PD_date1  => VD_rec _group_dat e,
  2211                           PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  2212  
  2213                  RETURN ;
  2214  
  2215               END IF;
  2216  
  2217         END  IF;
  2218  
  2219         -- * ********** ********** ********** ********** ********** ********** ********** ****
  2220         -- *
  2221         -- *  Check to  see if any  other job s of this  procedure  are runnin g.
  2222         -- *   If yes,  then end t his job.
  2223         -- *
  2224         -- * ********** ********** ********** ********** ********** ********** ********** ****
  2225  
  2226         SELE CT COUNT(* )
  2227           IN TO   VN_jo b_count
  2228         FROM   SYS.DBA_ JOBS_RUNNI NG R,
  2229                SYS.DBA_ JOBS J
  2230         WHER E  J.JOB =  R.JOB
  2231         AND  schema_use r = 'ADR'
  2232         AND  upper(WHAT ) LIKE '%B ATCH_SSN_P ROCESSED_S P%';
  2233  
  2234  
  2235         IF V N_job_coun t > 1 THEN
  2236  
  2237           VD _log_date  := SYSDATE ;
  2238           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  2239                     PD_ job_log_da te => VD_l og_date,
  2240                     PC_ job_status  => SUBSTR ('WARNING      - Chec k for runn ing jobs', 1,60),
  2241                     PC_ job_log_me ssage => S UBSTR('The re is anot her SSN VE RIFICATION  job runni ng.'
  2242                                                 || ' Exi ting job w ithout run ning.',1,2 000),
  2243                     PD_ date1 => V D_rec_grou p_date,
  2244                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  2245  
  2246              RETURN;
  2247  
  2248         ELSI F VB_run_s tandalone  THEN
  2249  
  2250              VD_log_dat e := SYSDA TE;
  2251              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2252                     PD_ job_log_da te => VD_l og_date,
  2253                     PC_ job_status  => SUBSTR ('INFORMAT ION - Star ting in ST ANDALONE m ode',1,60) ,
  2254                     PD_ date1 => V D_rec_grou p_date,
  2255                     PC_ text1 => S UBSTR('Dat e1 column  contains t he daily p rocess sta rt date',1 ,255));
  2256  
  2257         ELSE
  2258  
  2259              SELECT     MAX(J.Job)
  2260               INTO       VN_job_nu mber
  2261              FROM       SYS.DBA_JO BS_RUNNING  R,
  2262                         SYS.DBA_JO BS J
  2263              WHERE      J.JOB = R. JOB
  2264              AND        UPPER(J.WH AT) LIKE ' %ADR_ADDRE SS_Z05_UPD ATE_SP%';
  2265  
  2266              VD_log_dat e := SYSDA TE;
  2267              ADRMGT.Job _Process_L og_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2268                       P D_job_log_ date => VD _log_date,
  2269                       P C_job_stat us => SUBS TR('INFORM ATION - St arting DBM S_JOB mode ',1,60),
  2270                       P D_date1 =>  VD_rec_gr oup_date,
  2271                       P C_text1 =>  SUBSTR('D ate1 colum n contains  the daily  process s tart date' ,1,255));
  2272  
  2273         END  IF;
  2274  
  2275  
  2276         EXCE PTION
  2277  
  2278          WHE N OTHERS T HEN
  2279  
  2280            V D_log_date  := SYSDAT E;
  2281            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  SUBSTR(VC_ process_na me,1,60),
  2282                       P D_job_log_ date => VD _log_date,
  2283                       P C_job_stat us => SUBS TR('ERROR        - Un able to re trieve ins tance name ',1,60),
  2284                       P C_job_log_ message =>  SUBSTR('T erminating  script.', 1,2000),
  2285                       P D_date1 =>  VD_rec_gr oup_date,
  2286                       P C_text1 =>  SUBSTR('D ate1 colum n contains  the daily  process s tart date' ,1,255));
  2287  
  2288            R ETURN;
  2289  
  2290      END;
  2291  
  2292  
  2293      VC_log_ step := 'R etrieving  dir paths  for '||P_b atch_SSN_A DRToProces s_DIR;
  2294  
  2295      -- ==== ========== ========== ========== ========== ========== ========== ==
  2296      --
  2297      -- MAIN  PROGRAM
  2298      --
  2299      -- Retr ieving dir ectory pat hs of exte rnal files , log/erro r/processe d
  2300      --
  2301      -- ==== ========== ========== ========== ========== ========== ========== =
  2302  
  2303      SELECT  d.director y_path ,
  2304              l.director y_path,
  2305              err.direct ory_path,
  2306              p.director y_path
  2307      INTO
  2308         VC_A DRToProces s_file_pat h,
  2309         VC_l og_file_pa th,
  2310         VC_e rror_file_ path,
  2311         VC_T oProcess_f ile_path
  2312      FROM al l_director ies d,
  2313          (   SELECT dir ectory_pat h
  2314              FROM  all_ directorie s
  2315              WHERE dire ctory_name  = P_batch _SSN_log_D IR) l,
  2316          (   SELECT dir ectory_pat h
  2317              FROM  all_ directorie s
  2318              WHERE dire ctory_name  = P_batch _SSN_err_D IR) err,
  2319          (   SELECT dir ectory_pat h
  2320              FROM  all_ directorie s
  2321              WHERE dire ctory_name  = P_batch _SSN_ToPro cess_DIR)  p
  2322      WHERE d .directory _name = P_ batch_SSN_ ADRToProce ss_DIR;
  2323  
  2324  
  2325      ADRMGT. Job_Proces s_Log_Sp(
  2326            P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  2327            P D_job_log_ date => SY SDATE,
  2328            P C_job_stat us => SUBS TR('INFORM ATION - Pr ocess Init iation',1, 60),
  2329            P C_job_log_ message =>  SUBSTR('I NFORMATION  - ADRToPr ocess DIR=  '||VC_ADR ToProcess_ file_path| |' ** '||
  2330                                            'L og DIR= '| |P_batch_S SN_log_DIR ||' ** '||
  2331                                            'E rror DIR=  '||P_batch _SSN_err_D IR||' ** ' ||
  2332                                            'T oProcess D IR= '||VC_ ToProcess_ file_path| |' ** '||
  2333                                            VC _log_step, 1,2000),
  2334            P D_date1 =>  SYSDATE,
  2335            P C_text1 =>  SUBSTR(VC _log_step, 1,255));
  2336  
  2337  
  2338      IF VC_A DRtoProces s_file_pat h IS NULL  THEN
  2339  
  2340        VC_lo g_step :=  'Directory  path of A DRToProces s IS NOT s etup.';
  2341  
  2342        RAISE   FILE_PAT H_ADRTOPRO CESS_NULL_ E;
  2343  
  2344      ELSIF V C_ToProces s_file_pat h IS NULL  THEN
  2345  
  2346        VC_lo g_step :=  'Directory  path of T oProcessed  IS NOT se tup.';
  2347        RAISE   FILE_PAT H_TOPROCES S_NULL_E;
  2348  
  2349      ELSIF V C_log_file _path IS N ULL THEN
  2350  
  2351        VC_lo g_step :=  'Directory  path of L og IS NOT  setup.';
  2352        RAISE   LOG_FILE _PATH_NULL _E;
  2353  
  2354      ELSIF V C_error_fi le_path IS  NULL THEN
  2355  
  2356        VC_lo g_step :=  'Directory  path of E RROR IS NO T setup.';
  2357        RAISE   ERROR_FI LE_PATH_NU LL_E;
  2358  
  2359      END IF;
  2360  
  2361      VC_TMP  := 0;
  2362  
  2363  
  2364    -- ====== ========== ========== ========== ========== ========== ==
  2365    --
  2366    -- This w ill loop n umber of t imes to pr ocess each  source
  2367    -- data f ile.  As r equired, t here will  be 2 files  processed
  2368    --
  2369    -- ====== ========== ========== ========== ========== ========== ==
  2370  
  2371    FOR I IN  1..P_num_f iles_proce ss LOOP
  2372  
  2373  
  2374      SELECT  VC_prefix_ file||to_c har(sysdat e,'YY')||T O_CHAR(SYS DATE,'DDD' )||I||'.tx t'
  2375         INTO  VC_file_n ame
  2376      FROM du al;
  2377  
  2378      --DBMS_ OUTPUT.PUT _LINE('Fil e name: '| |VC_ADRToP rocess_fil e_path||'/ '||VC_file _name);
  2379      VC_log_ step := 'P rocessing  File '||VC _file_name ;
  2380  
  2381      ADRMGT. Job_Proces s_Log_Sp(
  2382            P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  2383            P D_job_log_ date => SY SDATE,
  2384            P C_job_stat us => SUBS TR(VC_log_ step,1,60) ,
  2385            P C_job_log_ message =>  SUBSTR('I NFORMATION  - '||VC_l og_step,1, 2000),
  2386            P D_date1 =>  VD_rec_gr oup_date,
  2387            P C_text1 =>  SUBSTR(VC _log_step, 1,255));
  2388  
  2389      -- ==== ========== ========== ========== ==========
  2390      --
  2391      -- Open ing source  data file  for readi ng and
  2392      -- load ing into S SN_VERIFIC ATION and  details
  2393      --
  2394      -- ==== ========== ========== ========== ==========
  2395      BEGIN
  2396  
  2397        VC_lo g_step :=  'Reading f ile '|| VC _file_name ;
  2398        V_Fil e_handle : = UTL_FILE .FOPEN(P_b atch_SSN_A DRToProces s_DIR, VC_ file_name,  'R');
  2399  
  2400        ADRMG T.Job_Proc ess_Log_Sp (
  2401                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2402                    PD_j ob_log_dat e => SYSDA TE,
  2403                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  2404                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  '||VC_log_ step,1,200 0),
  2405                    PD_d ate1 => SY SDATE,
  2406                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2407  
  2408  
  2409        -- == ========== ========== ========== ========== ========== =====
  2410        --
  2411        -- Ch ecking ext ernal tabl e existed  or nor pri or creatin g one
  2412        --
  2413        -- == ========== ========== ========== ========== ========== ======
  2414        SELEC T COUNT(1)  INTO
  2415          VC_ TMP
  2416        FROM   all_exter nal_tables
  2417        WHERE  table_nam e = CC_SSN _VERIFICAT ION_EXT;
  2418  
  2419        IF VC _TMP = 0    THEN
  2420            V C_log_step  := 'Build ing SQLSTM NT create  Ext Tab.';
  2421  
  2422            V C_SQLSTMNT  :=
  2423               'CREATE T ABLE ADR.' ||CC_SSN_V ERIFICATIO N_EXT||CHR (10)||
  2424                    '(SS N          VARCHAR2(9 ), '         ||CHR(10 )||
  2425                    'ENT RY_CODE        VARCHA R2(3),'      ||CHR(10 )||
  2426                    'PRO CESSING_CO DE  VARCHA R2(3),'      ||CHR(10 )||
  2427                    'LAS T_NAME         VARCHA R2(13),'     ||CHR(10 )||
  2428                    'FIR ST_NAME        VARCHA R2(10),'     ||CHR(10 )||
  2429                    'MID DLE_NAME       VARCHA R2(7),'      ||CHR(10 )||
  2430                    'DOB                VARCHA R2(8),'      ||CHR(10 )||
  2431                    'SEX                VARCHA R2(1),'      ||CHR(10 )||
  2432                    'INC OME_YEAR       VARCHA R2(4),'      ||CHR(10 )||
  2433                    'HEC _VA_ID         VARCHA R2(15),'     ||CHR(10 )||
  2434                    'SPO USE_CODE       VARCHA R2(1),'      ||CHR(10 )||
  2435                    'BLA NK_1           VARCHA R2(29),'     ||CHR(10 )||
  2436                    'BLA NK_2           VARCHA R2(20),'     ||CHR(10 )||
  2437                    'REQ UEST_CODE      VARCHA R2(4),'      ||CHR(10 )||
  2438                    'BLA NK_3           VARCHA R2(3))'      ||CHR(10 )||
  2439                    'ORG ANIZATION  EXTERNAL (  TYPE ORAC LE_LOADER'              ||CHR(10 )||
  2440                    'DEF AULT DIREC TORY '|| C C_BATCH_SS N_ADRTOPRO CESS_DIR | |' ' ||CHR (10)||
  2441                    'ACC ESS PARAME TERS (RECO RDS DELIMI TED BY NEW LINE '       ||CHR(10 )||
  2442                    'BAD FILE '||CC _BATCH_SSN _ERR_DIR|| ':''' ||VC _prefix_fi le||'_%a_% p.err' ||' '' '         ||CHR(10 )||
  2443                    'LOG FILE '||CC _BATCH_SSN _LOG_DIR|| ':''' ||VC _prefix_fi le||'_%a_% p.log' ||' '' '         ||CHR(10 )||
  2444                    'FIE LDS ('                                          ||CHR( 10)||
  2445                    'SSN            POSITION(1 :9) CHAR(9 ),'            ||CHR( 10)||
  2446                    'ENT RY_CODE    POSITION(1 0:12) CHAR (3),'          ||CHR( 10)||
  2447                    'PRO CESSING_CO DE  POSITI ON(13:15)  CHAR(3),'      ||CHR( 10)||
  2448                    'LAS T_NAME     POSITION(1 6:28) CHAR (13),'         ||CHR( 10)||
  2449                    'FIR ST_NAME    POSITION(2 9:38) CHAR (10),'         ||CHR( 10)||
  2450                    'MID DLE_NAME   POSITION(3 9:45) CHAR (7),'          ||CHR( 10)||
  2451                    'DOB            POSITION(4 6:53) CHAR (8),'          ||CHR( 10)||
  2452                    'SEX            POSITION(5 4:54) CHAR (1),'          ||CHR( 10)||
  2453                    'INC OME_YEAR   POSITION(5 5:58) CHAR (4),'          ||CHR( 10)||
  2454                    'HEC _VA_ID     POSITION(5 9:73) CHAR (15),'         ||CHR( 10)||
  2455                    'SPO USE_CODE   POSITION(7 4:74) CHAR (1),'          ||CHR( 10)||
  2456                    'BLA NK_1       POSITION(7 5:103) CHA R(29),'        ||CHR( 10)||
  2457                    'BLA NK_2       POSITION(1 04:123) CH AR(20),'       ||CHR( 10)||
  2458                    'REQ UEST_CODE  POSITION(1 24:127) CH AR(4),'        ||CHR( 10)||
  2459                    'BLA NK_3       POSITION(1 28:130) CH AR(3)'         ||CHR( 10)||
  2460                    ') )  LOCATION  ('''||VC_f ile_name|| ''')) PARA LLEL 4 REJ ECT LIMIT  UNLIMITED' ;
  2461  
  2462  
  2463            V C_log_step  := 'Creat ed Ext tab le '||VC_f ile_name;
  2464  
  2465            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  2466  
  2467            A DRMGT.Job_ Process_Lo g_Sp(
  2468                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2469                          PD_job_lo g_date =>  SYSDATE,
  2470                          PC_job_st atus => SU BSTR('Exte rnal table  is on fil e '||VC_fi le_name,1, 60),
  2471                          PC_job_lo g_message  => SUBSTR( 'INFORMATI ON - '||VC _log_step, 1,2000),
  2472                          PD_date1  => SYSDATE ,
  2473                          PC_text1  => SUBSTR( VC_log_ste p,1,255));
  2474  
  2475            V C_SQLSTMNT  := 'GRANT  SELECT ON  ADR.'|| C C_SSN_VERI FICATION_E XT||' TO A DR_R';
  2476            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  2477  
  2478        ELSE
  2479  
  2480            V C_log_step  := 'Modif ied Ext ta b on dataf ile '||VC_ file_name;
  2481  
  2482            V C_SQLSTMNT  := 'ALTER  TABLE ADR .'||CC_SSN _VERIFICAT ION_EXT||'  LOCATION  ('''||VC_f ile_name|| ''')';
  2483  
  2484  
  2485            E XECUTE IMM EDIATE VC_ SQLSTMNT;
  2486  
  2487            A DRMGT.Job_ Process_Lo g_Sp(
  2488                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2489                    PD_j ob_log_dat e => SYSDA TE,
  2490                    PC_j ob_status  => SUBSTR( 'Ext table  '||CC_SSN _VERIFICAT ION_EXT||'  EXISTED.' ,1,60),
  2491                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  External t able point s to file  '||VC_file _name|| '  - '||VC_lo g_step,1,2 000),
  2492                    PD_d ate1 => VD _rec_group _date,
  2493                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2494  
  2495        END I F;
  2496  
  2497        -- == ========== ========== ========== =
  2498        --
  2499        -- In sert rows  to SSN_VER IFICATION
  2500        --
  2501        -- == ========== ========== ========== =
  2502        BEGIN   -- Inser t rows to  SSN_VERIFI CATION
  2503  
  2504           VC _log_step  := 'Get ne x sequence  number.';
  2505  
  2506           SE LECT TRANS ACTION_S.N EXTVAL INT O VN_SSN_V ER_ID
  2507           FR OM DUAL;
  2508  
  2509           VC _log_step  := 'Add a  row into A DR.SSN_VER IFICATION' ;
  2510  
  2511           IN SERT /*+ A PPEND */IN TO ADR.SSN _VERIFICAT ION
  2512            (  SSN_VERIF ICATION_ID ,
  2513                    SSA_ SENT_DATE       ,
  2514                    RECO RD_CREATED _BY  ,
  2515                    RECO RD_CREATED _DATE ,
  2516                    RECO RD_MODIFIE D_BY  ,
  2517                    RECO RD_MODIFIE D_DATE ,
  2518                    RECO RD_MODIFIE D_COUNT
  2519            )
  2520           VA LUES(VN_SS N_VER_ID,  SYSDATE, C C_JOB_SSN_ TERM_SOL,  SYSDATE, C C_JOB_SSN_ TERM_SOL,  SYSDATE,0) ;
  2521  
  2522  
  2523           --  ========= ========== ========== ========== ====
  2524           --
  2525           --  Insert ro ws to SSN_ VERIFICATI ON_DETAIL
  2526           --
  2527           --  ========= ========== ========== ========== ====
  2528           BE GIN  -- lo oping exte rnal table
  2529  
  2530              VN_num_row s_processe d := 0;
  2531              VC_log_ste p := 'Loop ing extern al table ' ||CC_SSN_V ERIFICATIO N_EXT;
  2532  
  2533              FOR I IN ( SELECT bla nk_1, hec_ va_id, ssn  FROM ADR. SSN_VERIFI CATION_EXT ) LOOP
  2534  
  2535                 VN_vpid _value :=  I.blank_1;
  2536  
  2537                 BEGIN
  2538  
  2539                    VC_l og_step :=  'Obtainin g person i d using vp id_value=' ||VN_vpid_ value;
  2540  
  2541                    SELE CT p.perso n_id
  2542                       I NTO VN_per son_id
  2543                    FROM    person  p
  2544                    WHER E p.vpid_v alue = VN_ vpid_value ;
  2545  
  2546                    VC_l og_step :=  'Adding r ow to SSN_ VERIFICATI ON_DETAIL,  person_id ='||VN_per son_id||',  and vpid_ value='||V N_vpid_val ue;
  2547  
  2548  
  2549                    INSE RT /*+ APP END */ INT O ADR.SSN_ VERIFICATI ON_DETAIL
  2550                    (
  2551                             SSN_VE RIFICATION _DETAIL_ID  ,
  2552                             SSN_VE RIFICATION _ID         ,
  2553                             PERSON _ID                    ,
  2554                             SSN_ID                        ,
  2555                             SSN                            ,
  2556                             VERIFI CATION_REQ UEST_NUMBE R ,
  2557                             RECORD _CREATED_B Y            ,
  2558                             RECORD _CREATED_D ATE          ,
  2559                             RECORD _MODIFIED_ BY           ,
  2560                             RECORD _MODIFIED_ DATE         ,
  2561                             RECORD _MODIFIED_ COUNT
  2562                    )
  2563                    VALU ES( TRANSA CTION_S.NE XTVAL,
  2564                             VN_SSN _VER_ID,
  2565                             VN_per son_id,
  2566                             NULL,
  2567                             I.SSN,
  2568                             I.HEC_ VA_ID,
  2569                             CC_JOB _SSN_TERM_ SOL,
  2570                             SYSDAT E,
  2571                             CC_JOB _SSN_TERM_ SOL,
  2572                             SYSDAT E,
  2573                             0
  2574                             );
  2575  
  2576                    IF V N_commit_c nt >= CC_M AX_ROWS_CO MMIT THEN
  2577                       V N_commit_c nt := 0;
  2578  
  2579                       C OMMIT;
  2580                    ELSE
  2581                       V N_commit_c nt := VN_c ommit_cnt  + 1;
  2582  
  2583                    END  IF;
  2584  
  2585                    VN_n um_rows_pr ocessed :=  VN_num_ro ws_process ed + 1;
  2586  
  2587                    EXCE PTION
  2588                       W HEN NO_DAT A_FOUND TH EN
  2589  
  2590                           ADRMGT.J ob_Process _Err_Sp(
  2591                                PC_ job_name = > SUBSTR(V C_process_ name,1,60) ,
  2592                                PD_ job_error_ date  => S YSDATE,
  2593                                PC_ job_error_ code => SU BSTR(SQLCO DE,1,60),
  2594                                PC_ job_error_ message =>  SUBSTR('E RROR: No D ATA FOUND  in PERSON  table of F ile '||VC_ file_name| |
  2595                                      '. VPID_ VALUE= '|| VN_vpid_va lue||
  2596                                      '==> No  row added  to SSN_VER IFICATION_ DETAIL. ER RMSG: ' ||  SQLERRM,1 ,2000),
  2597                                PD_ date1 => S YSDATE,
  2598                                PC_ text1 => S UBSTR(VC_l og_step||'  VPID_VALU E='||VN_vp id_value,1 ,255));
  2599  
  2600  
  2601  
  2602                       W HEN OTHERS  THEN
  2603                             ADRMGT .Job_Proce ss_Err_Sp(
  2604                                      PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  2605                                      PD_job_e rror_date   => SYSDAT E,
  2606                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  2607                                      PC_job_e rror_messa ge => SUBS TR('ERROR:  Unknown E xception o f File '|| VC_file_na me||
  2608                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  2609                                      PD_date1  => SYSDAT E,
  2610                                      PC_text1  => SUBSTR (VC_log_st ep||' VPID _VALUE='|| VN_vpid_va lue,1,255) );
  2611  
  2612                 END;    -- SSN_VER IFICATION_ DETAIL
  2613  
  2614              END LOOP;   -- SSN_VE RIFICATION _EXT
  2615  
  2616              -- ======= ========== ========== ========== ========== ========== =
  2617              --
  2618              --  Update  rows proc essed of S SN_VERIFIC ATION.  Ot herwise
  2619              --  delete  SSN_VERIF ICATION wh en no reco rds matche d to
  2620              --  detail  table (SS N_VERIFICA TION_DETAI L)
  2621              --
  2622              -- ======= ========== ========== ========== ========== ========== =
  2623  
  2624              VN_num_row s_beProces sed := 0;
  2625  
  2626              SELECT COU NT(1)
  2627                 INTO VN _num_rows_ beProcesse d
  2628              FROM ADR.S SN_VERIFIC ATION_EXT;
  2629  
  2630  
  2631              IF VN_num_ rows_proce ssed > 0 T HEN
  2632  
  2633                  VC_log _step := ' Updating p rocessed r ows of SSN _VERIFICAT ION.';
  2634  
  2635                  MERGE  INTO ADR.S SN_VERIFIC ATION
  2636                       U SING DUAL
  2637                          ON (SSN_V ERIFICATIO N_ID = VN_ SSN_VER_ID )
  2638                       W HEN MATCHE D THEN
  2639                           UPDATE S ET SSN_SEN T_COUNT  =  VN_num_ro ws_process ed;
  2640  
  2641              ELSE
  2642  
  2643                  VC_log _step := ' Removing h eader reco rd in SSN_ VERIFICATI ON';
  2644  
  2645                  MERGE  INTO ADR.S SN_VERIFIC ATION
  2646                       U SING DUAL
  2647                       O N (SSN_VER IFICATION_ ID = VN_SS N_VER_ID)
  2648                       W HEN MATCHE D THEN
  2649                           UPDATE S ET SSN_SEN T_COUNT  =  VN_num_ro ws_process ed
  2650                           DELETE W HERE SSN_V ERIFICATIO N_ID = VN_ SSN_VER_ID ;
  2651  
  2652              END IF;
  2653              COMMIT;
  2654  
  2655              -- ======= ========== ========== ========== ========== ========== =
  2656              --
  2657              -- Moving  file name  to Process ed dir fro m toProces s folder
  2658              --
  2659              -- ======= ========== ========== ========== ========== ========== =
  2660  
  2661  
  2662              VC_log_ste p := 'Movi ng file na me '|| VC_ file_name| |' to '||V C_ToProces s_file_pat h;
  2663              --dbms_out put.put_li ne(VC_log_ step);
  2664  
  2665              VN_error_c ount:= VN_ num_rows_b eProcessed -VN_num_ro ws_process ed;
  2666  
  2667              UTL_FILE.F RENAME(P_b atch_SSN_A DRToProces s_DIR, VC_ file_name, P_batch_SS N_ToProces s_DIR,VC_f ile_name,T RUE);
  2668  
  2669  
  2670              ADRMGT.Job _Process_L og_Sp(
  2671                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2672                    PD_j ob_log_dat e => SYSDA TE,
  2673                    PC_j ob_status  => SUBSTR( 'INFORMATI ON - Proce ss Complet ed.',1,60) ,
  2674                    PC_j ob_log_mes sage => SU BSTR('****  SUMMARY I NFO CHANGE S TO SSN_V ERIFICATIO N_DETAIL * ***'||CHR( 10)||
  2675                                      '  Total  Rows Proc essed: '||  VN_num_ro ws_beProce ssed||CHR( 10)||
  2676                                      '  Num R ows Added:  '|| VN_nu m_rows_pro cessed||CH R(10)||
  2677                                      '  Num R ows Reject ed: '||VN_ error_coun t||CHR(10) ||
  2678                                      '  File  Name '||VC _file_name ||' is now  moved to  '||VC_ToPr ocess_file _path||CHR (10)||
  2679                                      '******* ********** **********  END TRANS ACTION *** ********** ********** ******',1, 2000),
  2680                    PD_d ate1 => SY SDATE,
  2681                    PC_t ext1 => SU BSTR(VC_lo g_step||'  VPID_VALUE ='||VN_vpi d_value,1, 255));
  2682  
  2683  
  2684              EXCEPTION
  2685                  WHEN O THERS THEN
  2686                    ADRM GT.Job_Pro cess_Err_S p(
  2687                             PC_job _name => S UBSTR(VC_p rocess_nam e,1,60),
  2688                             PD_job _error_dat e  => SYSD ATE,
  2689                             PC_job _error_cod e => SUBST R(SQLCODE, 1,60),
  2690                             PC_job _error_mes sage => SU BSTR('ERRO R: Unknown  Exception  of File ' ||VC_file_ name||
  2691                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  2692                             PD_dat e1 => SYSD ATE,
  2693                             PC_tex t1 => SUBS TR(VC_log_ step||' VP ID_VALUE=' ||VN_vpid_ value,1,25 5));
  2694  
  2695           EN D; -- loop ing extern al table
  2696  
  2697  
  2698           EX CEPTION
  2699  
  2700               WHEN UTL_ FILE.INVAL ID_PATH TH EN
  2701  
  2702                 ADRMGT. Job_Proces s_Err_Sp(
  2703                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2704                    PD_j ob_error_d ate  => SY SDATE,
  2705                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2706                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id PATH -  '||VC_ADRt oProcess_f ile_path||
  2707                                               ' ERRMSG:  '||   SQLE RRM,1,2000 ),
  2708                    PD_d ate1 => SY SDATE,
  2709                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2710  
  2711               WHEN UTL_ FILE.INVAL ID_FILENAM E THEN
  2712  
  2713                 ADRMGT. Job_Proces s_Log_Sp(
  2714                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2715                    PD_j ob_log_dat e => SYSDA TE,
  2716                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  2717                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  Invalid fi le name '| | VC_file_ name,1,200 0),
  2718                    PD_d ate1 => SY SDATE,
  2719                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2720  
  2721              WHEN NO_DA TA_FOUND T HEN
  2722  
  2723                ADRMGT.J ob_Process _Log_Sp(
  2724                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2725                    PD_j ob_log_dat e => SYSDA TE,
  2726                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  2727                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  NO DATA FO UND of Fil e '||VC_fi le_name,1, 2000),
  2728                    PD_d ate1 => SY SDATE,
  2729                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2730  
  2731              WHEN OTHER S THEN
  2732  
  2733                ADRMGT.J ob_Process _Err_Sp(
  2734                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2735                    PD_j ob_error_d ate  => SY SDATE,
  2736                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2737                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  2738                                               '. ' || SQ LERRM,1,20 00),
  2739                    PD_d ate1 => VD _rec_group _date,
  2740                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2741  
  2742          END ;   -- SSN _VERIFICAT ION
  2743  
  2744       EXCEPT ION
  2745  
  2746         WHEN  UTL_FILE. INVALID_PA TH THEN
  2747           AD RMGT.Job_P rocess_Err _Sp(
  2748                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2749                    PD_j ob_error_d ate  => SY SDATE,
  2750                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2751                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id PATH -  '||VC_ADRt oProcess_f ile_path||
  2752                                               ' ERRMSG:  '||   SQLE RRM,1,2000 ),
  2753                    PD_d ate1 => SY SDATE,
  2754                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2755  
  2756  
  2757         WHEN  UTL_FILE. INVALID_FI LENAME THE N
  2758  
  2759  
  2760           AD RMGT.Job_P rocess_Log _Sp(
  2761                     PC_ job_name = > SUBSTR(V C_process_ name,1,60) ,
  2762                     PD_ job_log_da te => SYSD ATE,
  2763                     PC_ job_status  => SUBSTR (VC_log_st ep,1,60),
  2764                     PC_ job_log_me ssage => S UBSTR('INF ORMATION -  Invalid f ile name ' || VC_file _name,1,20 00),
  2765                     PD_ date1 => S YSDATE,
  2766                     PC_ text1 => S UBSTR(VC_l og_step,1, 255));
  2767  
  2768  
  2769         WHEN  UTL_FILE. INVALID_OP ERATION TH EN
  2770  
  2771  
  2772           AD RMGT.Job_P rocess_Log _Sp(
  2773                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2774                    PD_j ob_log_dat e => SYSDA TE,
  2775                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  2776                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  File Name  Not find/I nvalid ope ration of  File '|| V C_file_nam e,1,2000),
  2777                    PD_d ate1 => SY SDATE,
  2778                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2779  
  2780  
  2781         WHEN  UTL_FILE. WRITE_ERRO R THEN
  2782           AD RMGT.Job_P rocess_Err _Sp(
  2783                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2784                    PD_j ob_error_d ate  => SY SDATE,
  2785                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2786                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Inval id Write E rror. ERRM SG: ' || S QLERRM,1,2 000),
  2787                    PD_d ate1 => SY SDATE,
  2788                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2789  
  2790         WHEN  NO_DATA_F OUND THEN
  2791           AD RMGT.Job_P rocess_Log _Sp(
  2792                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2793                    PD_j ob_log_dat e => SYSDA TE,
  2794                    PC_j ob_status  => SUBSTR( VC_log_ste p,1,60),
  2795                    PC_j ob_log_mes sage => SU BSTR('INFO RMATION -  No DATA FO UND of Fil e '||VC_fi le_name,1, 2000),
  2796                    PD_d ate1 => SY SDATE,
  2797                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2798  
  2799         WHEN  OTHERS TH EN
  2800  
  2801           AD RMGT.Job_P rocess_Err _Sp(
  2802                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2803                    PD_j ob_error_d ate  => SY SDATE,
  2804                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2805                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  2806                                               '. ' || SQ LERRM||' -  VPID_VALU E: '||VN_v pid_value, 1,2000),
  2807                    PD_d ate1 => SY SDATE,
  2808                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2809         END;
  2810  
  2811      END LOO P;
  2812  
  2813  
  2814      -- ==== ========== ========== ========== =========
  2815      --
  2816      -- Clea n up old l og records
  2817      --
  2818      -- ==== ========== ========== ========== =========
  2819      DELETE
  2820      FROM       ADRMGT. Job_Proces s_Logs
  2821      WHERE      Job_nam e = VC_pro cess_name
  2822      AND        TRUNC(D ATE1) < TR UNC(SYSDAT E) - VD_da ys_deletio n;
  2823  
  2824      COMMIT;
  2825  
  2826  
  2827  
  2828      VD_log_ date := SY SDATE;
  2829      t2 :=   DBMS_UTILI TY.get_tim e;
  2830  
  2831      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  2832                 PD_job_ log_date = > VD_log_d ate,
  2833                 PC_job_ status =>  SUBSTR('SU CCESS      - Processi ng Complet ed',1,60),
  2834                 PC_job_ log_messag e => SUBST R('Process ing Time ( sec): ' ||  TO_CHAR(( t2 - t1)/1 00),1,2000 ),
  2835                 PD_date 1 => VD_re c_group_da te,
  2836                 PC_text 1 => SUBST R('Date1 c olumn cont ains the d aily proce ss start d ate',1,255 ));
  2837  
  2838  
  2839      EXCEPTI ON
  2840  
  2841        WHEN  INVALID_SS N_ADRTOPRO CESS_E THE N
  2842            A DRMGT.Job_ Process_Er r_Sp(
  2843                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2844                    PD_j ob_error_d ate  => SY SDATE,
  2845                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2846                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  ADRToProce ss: '||P_b atch_SSN_A DRToProces s_DIR,1,20 00),
  2847                    PD_d ate1 => SY SDATE,
  2848                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2849  
  2850        WHEN  INVALID_SS N_TOPROCES S_E        THEN
  2851            A DRMGT.Job_ Process_Er r_Sp(
  2852                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2853                    PD_j ob_error_d ate  => SY SDATE,
  2854                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2855                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  ToProcess:  '||P_batc h_SSN_ToPr ocess_DIR, 1,2000),
  2856                    PD_d ate1 => SY SDATE,
  2857                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2858  
  2859  
  2860        WHEN  INVALID_SS N_LOG_E  T HEN
  2861  
  2862            A DRMGT.Job_ Process_Er r_Sp(
  2863                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2864                    PD_j ob_error_d ate  => SY SDATE,
  2865                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2866                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  Log: '||P_ batch_SSN_ log_DIR,1, 2000),
  2867                    PD_d ate1 => SY SDATE,
  2868                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2869  
  2870        WHEN  INVALID_SS N_ERR_E TH EN
  2871            A DRMGT.Job_ Process_Er r_Sp(
  2872                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2873                    PD_j ob_error_d ate  => SY SDATE,
  2874                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2875                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - Inva lid input  parameter  Error: '|| P_batch_SS N_err_DIR, 1,2000),
  2876                    PD_d ate1 => SY SDATE,
  2877                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2878  
  2879        WHEN  NO_DATA_FO UND THEN
  2880  
  2881            A DRMGT.Job_ Process_Er r_Sp(
  2882                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2883                    PD_j ob_error_d ate  => SY SDATE,
  2884                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2885                    PC_j ob_error_m essage =>  SUBSTR('ER ROR - No D ATA FOUND  in ADR ToP rocess of  File '||P_ batch_SSN_ ADRToProce ss_DIR,1,2 000),
  2886                    PD_d ate1 => SY SDATE,
  2887                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2888  
  2889        WHEN  FILE_PATH_ TOPROCESS_ NULL_E THE N
  2890            A DRMGT.Job_ Process_Er r_Sp(
  2891                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2892                    PD_j ob_error_d ate  => SY SDATE,
  2893                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2894                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ ToProcess_ DIR||' nee ds to be c onfigured.  ' || SQLE RRM,1,2000 ),
  2895                    PD_d ate1 => SY SDATE,
  2896                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2897  
  2898  
  2899        WHEN  FILE_PATH_ ADRTOPROCE SS_NULL_E  THEN
  2900            A DRMGT.Job_ Process_Er r_Sp(
  2901                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2902                    PD_j ob_error_d ate  => SY SDATE,
  2903                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2904                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ ADRToProce ss_DIR||'  needs to b e configur ed. ' || S QLERRM,1,2 000),
  2905                    PD_d ate1 => SY SDATE,
  2906                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2907  
  2908        WHEN  LOG_FILE_P ATH_NULL_E  THEN
  2909  
  2910            A DRMGT.Job_ Process_Er r_Sp(
  2911                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2912                    PD_j ob_error_d ate  => SY SDATE,
  2913                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2914                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ log_DIR||'  needs to  be configu red. ' ||  SQLERRM,1, 2000),
  2915                    PD_d ate1 => SY SDATE,
  2916                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2917  
  2918        WHEN  ERROR_FILE _PATH_NULL _E THEN
  2919  
  2920            A DRMGT.Job_ Process_Er r_Sp(
  2921                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2922                    PD_j ob_error_d ate  => SY SDATE,
  2923                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2924                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: '||P_ batch_SSN_ err_DIR||'  needs to  be configu red. ' ||  SQLERRM,1, 2000),
  2925                    PD_d ate1 => SY SDATE,
  2926                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2927  
  2928        WHEN  OTHERS THE N
  2929  
  2930            A DRMGT.Job_ Process_Er r_Sp(
  2931                    PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  2932                    PD_j ob_error_d ate  => SY SDATE,
  2933                    PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  2934                    PC_j ob_error_m essage =>  SUBSTR('ER ROR: Unkno wn Excepti on of File  '||VC_fil e_name||
  2935                                      '. ' ||  SQLERRM,1, 2000),
  2936                    PD_d ate1 => SY SDATE,
  2937                    PC_t ext1 => SU BSTR(VC_lo g_step,1,2 55));
  2938  
  2939    END;
  2940   /
  2941   DROP PROCE DURE ADR.C LEAN_SSN_F RM_ADDR;
  2942  
  2943   CREATE OR  REPLACE PR OCEDURE AD R.CLEAN_SS N_FRM_ADDR  IS
  2944      v_rec_c nt   INTEG ER;
  2945   BEGIN
  2946      ADRMGT. Job_Proces s_Log_Sp ( PC_job_nam e           => SUBSTR  ('CLEAN_S SN_FRM_ADD R', 1, 60) ,
  2947                                    PD_job_log _date       => SYSDAT E,
  2948                                    PC_job_sta tus         => 'STG-B EGIN',
  2949                                    PC_JOB_LOG _MESSAGE    => SUBSTR  (' Starti ng to proc ess', 1, 6 0));
  2950  
  2951      INSERT  INTO ADR.S TG_ADDRESS _SSN_CLEAN UP (ADDRES S_ID,
  2952                                                   ADDRES S_LINE1,
  2953                                                   ADDRES S_LINE2,
  2954                                                   ADDRES S_LINE3,
  2955                                                   CITY,
  2956                                                   SSN)
  2957         SELE CT address _id,
  2958                 address _line1,
  2959                 address _line2,
  2960                 address _line3,
  2961                 city,
  2962                 rpt_psi m_traits.s sn
  2963           FR OM address , person,  psim.rpt_p sim_traits
  2964          WHE RE     add ress.perso n_id = per son.person _id
  2965                 AND per son.vpid_v alue = rpt _psim_trai ts.vpid_va lue
  2966                 AND (    (INSTR (
  2967                              REGEX P_REPLACE  (address_l ine1,
  2968                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  2969                                                ''),
  2970                              rpt_p sim_traits .ssn) > 0)
  2971                      OR  (INSTR (
  2972                              REGEX P_REPLACE  (address_l ine2,
  2973                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  2974                                                ''),
  2975                              rpt_p sim_traits .ssn) > 0)
  2976                      OR  (INSTR (
  2977                              REGEX P_REPLACE  (address_l ine3,
  2978                                                '([[:alph a:]]|[[:sp ace:]]|[[: punct:]])* ',
  2979                                                ''),
  2980                              rpt_p sim_traits .ssn) > 0)
  2981                      OR  (INSTR (
  2982                              REGEX P_REPLACE  (city, '([ [:alpha:]] |[[:space: ]]|[[:punc t:]])*', ' '),
  2983                              rpt_p sim_traits .ssn) > 0) );
  2984  
  2985      v_rec_c nt := SQL% ROWCOUNT;
  2986      COMMIT;
  2987  
  2988      ADRMGT. Job_Proces s_Log_Sp (
  2989         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  2990         PD_j ob_log_dat e      =>  SYSDATE,
  2991         PC_j ob_status         =>  'STG-COMPL ETE',
  2992         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  2993                                         'STAG E record_c ount : '
  2994                                      || v_rec _cnt
  2995                                      || ' Com pleted col lecting AD DRESS_IDs' ,
  2996                                      1,
  2997                                      60));
  2998  
  2999      UPDATE  address tg t
  3000         SET  (address_l ine1,
  3001               address_l ine2,
  3002               address_l ine3,
  3003               city) =
  3004                 (SELECT  CASE
  3005                             WHEN ( INSTR (
  3006                                       REGEXP_ REPLACE (a ddress_lin e1,
  3007                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  3008                                                        ' '),
  3009                                       ssn) >  0) THEN
  3010                                NUL L
  3011                             ELSE
  3012                                add ress_line1
  3013                          END
  3014                             addres s_line1_re p,
  3015                          CASE
  3016                             WHEN ( INSTR (
  3017                                       REGEXP_ REPLACE (a ddress_lin e2,
  3018                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  3019                                                        ' '),
  3020                                       ssn) >  0) THEN
  3021                                NUL L
  3022                             ELSE
  3023                                add ress_line2
  3024                          END
  3025                             addres s_line2_re p,
  3026                          CASE
  3027                             WHEN ( INSTR (
  3028                                       REGEXP_ REPLACE (a ddress_lin e3,
  3029                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  3030                                                        ' '),
  3031                                       ssn) >  0) THEN
  3032                                NUL L
  3033                             ELSE
  3034                                add ress_line3
  3035                          END
  3036                             addres s_line3_re p,
  3037                          CASE
  3038                             WHEN ( INSTR (
  3039                                       REGEXP_ REPLACE (c ity,
  3040                                                        ' ([[:alpha: ]]|[[:spac e:]]|[[:pu nct:]])*',
  3041                                                        ' '),
  3042                                       ssn) >  0) THEN
  3043                                NUL L
  3044                             ELSE
  3045                                cit y
  3046                          END
  3047                             city_r ep
  3048                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  3049                   WHERE  src.addre ss_id = tg t.address_ id),
  3050              record_mod ified_by =  '581393',
  3051              record_mod ified_date  = SYSDATE ,
  3052              record_mod ified_coun t = record _modified_ count + 1
  3053       WHERE  EXISTS
  3054                 (SELECT  1
  3055                    FROM  STG_ADDRE SS_SSN_CLE ANUP src
  3056                   WHERE  src.addre ss_id = tg t.address_ id);
  3057  
  3058      v_rec_c nt := SQL% ROWCOUNT;
  3059      COMMIT;
  3060  
  3061      ADRMGT. Job_Proces s_Log_Sp (
  3062         PC_j ob_name           =>  SUBSTR ('C LEAN_SSN_F RM_ADDR',  1, 60),
  3063         PD_j ob_log_dat e      =>  SYSDATE,
  3064         PC_j ob_status         =>  'COMPLETE' ,
  3065         PC_J OB_LOG_MES SAGE   =>  SUBSTR (
  3066                                         'Upda ted record _count : '
  3067                                      || v_rec _cnt
  3068                                      || ' Sta rting to p rocess',
  3069                                      1,
  3070                                      60));
  3071   EXCEPTION
  3072      WHEN NO _DATA_FOUN D THEN
  3073         ADRM GT.Job_Pro cess_Log_S p (
  3074            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  3075            P D_job_log_ date       => SYSDATE ,
  3076            P C_job_stat us         => 'WARN',
  3077            P C_JOB_LOG_ MESSAGE    => SUBSTR  ('Nothing  to remove;  no record  FOUND', 1 , 60));
  3078      WHEN OT HERS THEN
  3079         ADRM GT.Job_Pro cess_Log_S p (
  3080            P C_job_name            => SUBSTR  ('CLEAN_SS N_FRM_ADDR ', 1, 60),
  3081            P D_job_log_ date       => SYSDATE ,
  3082            P C_job_stat us         => 'FAILED ',
  3083            P C_JOB_LOG_ MESSAGE    => SUBSTR  (
  3084                                            DB MS_UTILITY .FORMAT_CA LL_STACK
  3085                                         || DB MS_UTILITY .format_er ror_stack
  3086                                         || DB MS_UTILITY .format_er ror_backtr ace,
  3087                                         1,
  3088                                         60));
  3089   END CLEAN_ SSN_FRM_AD DR;
  3090   /
  3091  
  3092  
  3093   CREATE OR  REPLACE PU BLIC SYNON YM CLEAN_S SN_FRM_ADD R FOR ADR. CLEAN_SSN_ FRM_ADDR;
  3094   DROP PROCE DURE ADR.H ANDBOOK_SP ;
  3095  
  3096   CREATE OR  REPLACE PR OCEDURE AD R.HANDBOOK _SP
  3097   IS
  3098  
  3099     -- VARIA BLES
  3100  
  3101     TYPE TAB LE_COL_TYP E IS TABLE  OF VARCHA R2(1000) I NDEX BY BI NARY_INTEG ER;
  3102     VN_STR_L EN         NUMBER:= 1 00;
  3103     VN_SEPAR ATOR       CONSTANT V ARCHAR2(3) := ' | ';
  3104  
  3105     VC_WHERE            VARCHAR2(3 200);
  3106     LV_Str_L ist        VARCHAR2(5 00);
  3107     LB_cnt              BINARY_INT EGER;
  3108     LA_Tab_S tr         DBMS_UTILI TY.UNCL_AR RAY;
  3109  
  3110     LC_TMP              VARCHAR2(1 00);
  3111     LC_err_s tr         VARCHAR2(3 2767);
  3112     LC_str              LONG;
  3113     l_row_cn t          BINARY_INT EGER := 0;
  3114     LN_col_c ount       BINARY_INT EGER := 0;
  3115  
  3116     VC_log_s tep        VARCHAR2(5 00);
  3117     lc_col1             TABLE_COL_ TYPE;
  3118     lc_col2             TABLE_COL_ TYPE;
  3119     lc_col3             TABLE_COL_ TYPE;
  3120     lc_col4             TABLE_COL_ TYPE;
  3121     lc_col5             TABLE_COL_ TYPE;
  3122  
  3123  
  3124     VC_SELEC T1          VARCHAR2( 60):= 'SEL ECT * FROM  (';
  3125     LC_WHERE _LIMIT      VARCHAR2( 2000);
  3126     LN_MAX_R OWS_DISP    NUMBER :=  30;  --Th is number  limit numb er of rows  display o n the body  message
  3127     VN_max_r ec_display              NUMBER;
  3128     VN_vbr_t ot             NUMBER ;
  3129     VN_ven_t ot            NUMBER;
  3130     VN_brv_t ot            NUMBER;
  3131     VN_hbr_t ot            NUMBER;
  3132     VN_pr_to t            NUMBER;
  3133  
  3134     VC_SQLST MT          VARCHAR2( 5000);
  3135  
  3136     vMesg                LONG;
  3137     vSubj                VARCHAR2( 800);
  3138  
  3139  
  3140     VB_allow _rpt_inst         BOO LEAN := FA LSE;
  3141     VB_error                  BOOL EAN := FAL SE;
  3142     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  3143     VB_updat e_row              BO OLEAN := F ALSE;
  3144  
  3145     VC_allow _rpt_inst          VA RCHAR2(5)  := NULL;
  3146  
  3147     VC_proce ss_duratio n       VA RCHAR2(25) ;
  3148     VC_proce ss_name             V ARCHAR2(30 ) := 'ADR. HANDBOOK_S P';
  3149  
  3150  
  3151     VN_Inst_ name              VAR CHAR2(60);
  3152     VC_host_ name                V ARCHAR2(60 );
  3153     VC_email _list              VA RCHAR2(300 );
  3154  
  3155  
  3156     CURSOR c _hbr IS SE LECT batch _release_s ize, batch _release_d ate
  3157       FROM h andbook_ba tch_reques t
  3158       WHERE  (record_cr eated_date  >= TRUNC( sysdate) -  7
  3159       AND re cord_creat ed_date <  sysdate)
  3160       AND st d_handbook batchreque ststa_id =  2000010
  3161       ORDER  BY record_ created_da te;
  3162  
  3163   -- ******* ********** ********** ********** ********** ********** ********** *******
  3164   -- *
  3165   -- *  MAIN  PROCEDURE :
  3166   -- *
  3167   -- *
  3168   -- ******* ********** ********** ********** ********** ********** ********** *******
  3169  
  3170   BEGIN
  3171  
  3172      VC_log_ step := 'G et instanc e name';
  3173  
  3174      SELECT  sys_contex t('USERENV ','INSTANC E_NAME'),  sys_contex t('USERENV ', 'SERVER _HOST')
  3175      into VN _Inst_name , VC_host_ name
  3176      FROM du al;
  3177  
  3178      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => SUBSTR (VC_proces s_name,1,6 0),
  3179                                 PD _job_log_d ate => SYS DATE,
  3180                                 PC _job_statu s => SUBST R('INFORMA TION - Pro cess Initi ation',1,6 0),
  3181                                 PD _date1 =>  SYSDATE,
  3182                                 PC _text1 =>  VC_log_ste p||' - Ini tiating AD R Handbook  Job');
  3183  
  3184      VN_max_ rec_displa y := NVL(V N_max_rec_ display,30 );  -- set  max defau lt to 30 r ows
  3185       LC_str  := 'List  of batch r equests fo r the week : ';
  3186       FOR th is_sql in   c_hbr  LO OP
  3187         LC_s tr :=  LC_ str ||CHR( 10)||RPAD( this_sql.b atch_relea se_size,20 )||' '||th is_sql.bat ch_release _date;
  3188       End Lo op;
  3189  
  3190         SELE CT EMAIL_A DDRESS_LIS T
  3191           IN TO  VC_ema il_list
  3192         FROM  ADRMGT.AD R_USER_CON TACT
  3193         WHER E CONTACT_ EMAIL_USER _NAME = 'E SR_GRP';
  3194         SELE CT NVL(SUM (batch_rel ease_size) , 0) weekl y_batch_re lease_tota l
  3195         INTO  VN_vbr_to t
  3196         FROM  handbook_ batch_requ est
  3197         WHER E (record_ created_da te >= TRUN C(sysdate)  - 7
  3198         AND  record_cre ated_date  < sysdate)
  3199         AND  std_handbo okbatchreq ueststa_id  = 2000010 ;
  3200         LC_s tr := LC_s tr||CHR(10 )||'Total  number of  records se lected for  the week  from the b atch reque st:  '||VN _vbr_tot|| CHR(10);
  3201  
  3202         SELE CT COUNT(* ) requests _to_vendor _total_cou nt
  3203         INTO  VN_ven_to t
  3204         FROM  handbook_ mail_queue  hbq, hand book_mail_ status_h h ms
  3205         WHER E hbq.hand book_mail_ queue_id =  hms.handb ook_mail_q ueue_id
  3206         AND  hms.std_ha ndbookmail stattype_i d = 200000 5
  3207         AND  (hbq.recor d_created_ date >= TR UNC(sysdat e) - 7
  3208         AND  hbq.record _created_d ate < sysd ate);
  3209         LC_s tr := LC_s tr||CHR(10 )||'Total  Number of  requests s ent to ven dor:  '||  VN_ven_tot ||CHR(10);
  3210  
  3211         SELE CT COUNT(* ) batch_re quests_to_ vendor_cou nt
  3212         into  VN_brv_to t
  3213         FROM  handbook_ mail_queue  hbq, hand book_mail_ status_h h ms
  3214         WHER E hbq.hand book_mail_ queue_id =  hms.handb ook_mail_q ueue_id
  3215         AND  hms.std_ha ndbookmail stattype_i d = 200000 5
  3216         AND  hbq.handbo ok_batch_r equest_id  IN (SELECT  handbook_ batch_requ est_id
  3217                                                  FROM ha ndbook_bat ch_request
  3218                                                 WHERE (r ecord_crea ted_date > = TRUNC(sy sdate) - 7
  3219                                                   AND re cord_creat ed_date <  sysdate)
  3220                                                   AND st d_handbook batchreque ststa_id =  2000010);
  3221          LC_ str := LC_ str||CHR(1 0)||'Total  Number of  requests  sent to ve ndor from  the batch  requests f or the wee k:  '|| VN _brv_tot|| CHR(10);
  3222          SEL ECT COUNT( *) handboo ks_receive d_count
  3223          INT O VN_hbr_t ot
  3224          FRO M vbr.docu ment_recei pt d, vbr. document d r
  3225          WHE RE d.docum ent_receip t_id = dr. document_r eceipt_id
  3226          AND  receipt_s tring IN ( SELECT han dbook_mail _queue_id
  3227                                 FR OM handboo k_mail_que ue hmq, ha ndbook_bat ch_request  hbr
  3228                                WHE RE hmq.han dbook_batc h_request_ id = hbr.h andbook_ba tch_reques t_id
  3229                                  A ND hbr.std _handbookb atchreques tsta_id =  2000010
  3230                                  A ND (hbr.re cord_creat ed_date >=  TRUNC(sys date) - 7
  3231                                  A ND hbr.rec ord_create d_date < s ysdate))
  3232          AND  dr.docume nt_type_id  = 3;
  3233          LC_ str := LC_ str||CHR(1 0)||'Numbe r of handb ooks recei ved:  '||  VN_hbr_tot ||CHR(10);
  3234          SEL ECT COUNT( *) profile s_received _count
  3235          INT O VN_pr_to t
  3236          FRO M vbr.docu ment_recei pt d, vbr. document d r
  3237          WHE RE d.docum ent_receip t_id = dr. document_r eceipt_id
  3238          AND  receipt_s tring IN ( SELECT han dbook_mail _queue_id
  3239                                 FR OM handboo k_mail_que ue hmq, ha ndbook_bat ch_request  hbr
  3240                                WHE RE hmq.han dbook_batc h_request_ id = hbr.h andbook_ba tch_reques t_id
  3241                                  A ND hbr.std _handbookb atchreques tsta_id =  2000010
  3242                                  A ND (hbr.re cord_creat ed_date >=  TRUNC(sys date) - 7
  3243                                  A ND hbr.rec ord_create d_date < s ysdate))
  3244           AN D dr.docum ent_type_i d = 4;
  3245          LC_ str := LC_ str||CHR(1 0)||'Numbe r of benef it profile s received :  '|| VN_ pr_tot;
  3246   --      DB MS_OUTPUT. PUT_LINE(L C_str);
  3247         vSub j := VC_pr ocess_name ||' - Repo rt ' ||'(' ||VN_Inst_ name||'@'| |VC_host_n ame||')';
  3248         vMes g := LC_st r;
  3249         VC_l og_step :=  'Invoking  utl_mail. send';
  3250           UTL_MAIL.S END (SENDE      => 'oracle @'||VC_hos t_name||'a ac. DNS     ',
  3251                         RECIPIENTS   => VC_em ail_list,
  3252                         SUBJECT      => vSubj ,
  3253                         MESSAGE      => vMesg );
  3254  
  3255        ADRMG T.Job_Proc ess_Log_Sp (
  3256               PC_job_na me => SUBS TR(VC_proc ess_name,1 ,60),
  3257               PD_job_lo g_date =>  SYSDATE,
  3258               PC_job_st atus => SU BSTR('INFO RMATION -  '||VC_log_ step,1,60) ,
  3259               PC_job_lo g_message  => SUBSTR( VC_log_ste p,1,2000),
  3260               PD_date1  => SYSDATE ,
  3261               PC_text1  => SUBSTR( VC_log_ste p,1,255));
  3262  
  3263     EXCEPTIO N
  3264  
  3265       WHEN N O_DATA_FOU ND THEN
  3266  
  3267         NULL ;
  3268  
  3269       WHEN O THERS THEN
  3270  
  3271         ADRM GT.Job_Pro cess_Err_S p(PC_job_n ame => SUB STR(VC_pro cess_name, 1,60),
  3272                                      PD_job_e rror_date   => SYSDAT E,
  3273                                      PC_job_e rror_code  => SUBSTR( SQLCODE,1, 60),
  3274                                      PC_job_e rror_messa ge => SUBS TR('Unknow n error wh ile removi ng old pro cess logs.  '
  3275                                                                        || SQLE RRM,1,2000 ),
  3276                                      PD_date1  => SYSDAT E,
  3277                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3278  
  3279  
  3280   END HANDBO OK_SP;
  3281   /
  3282   DROP PROCE DURE ADR.H L7_TXN_LOG _NULL_ERR_ COL_SP;
  3283  
  3284   CREATE OR  REPLACE PR OCEDURE AD R.Hl7_Txn_ Log_Null_E rr_Col_Sp
  3285     (PB_run_ standalone
  3286        IN      BOOLEAN  DEFAULT FA LSE,
  3287      PB_allo w_rpt_inst
  3288        IN      BOOLEAN  DEFAULT FA LSE,
  3289      PN_rows _to_proces s
  3290        IN      NUMBER D EFAULT NUL L
  3291     )
  3292   IS
  3293  
  3294   -- ******* ********** ********** ********** ********** ********** ********** ********
  3295   -- * Proce dure: Hl7_ Txn_Log_Nu ll_Error_C ol
  3296   -- *
  3297   -- *   Upd ate HL7 tr anscations  to remove  data from  the inter nal_error_ text
  3298   -- *   col umn for al l rows mor e than 6 m onths old.
  3299   -- *
  3300   -- * Param eters:
  3301   -- *
  3302   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  3303   -- *                         Def ault: FALS E
  3304   -- *
  3305   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  3306   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  3307   -- *                         Def ault: FALS E
  3308   -- *
  3309   -- ******* ********** ********** ********** ********** ********** ********** ********
  3310   --
  3311   -- ======= ========== ========== ========== ========== ========== ========== ========
  3312   -- Date         Autho r             Descrip tion
  3313   -- ======= ========== ========== ========== ========== ========== ========== ========
  3314   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 100.
  3315   --
  3316   -- ======= ========== ========== ========== ========== ========== ========== ========
  3317  
  3318   -- CONSTAN TS
  3319  
  3320     CC_no                                   V ARCHAR2(1)  := 'N';
  3321     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'HL7  NULL INTER NAL_ERROR_ TEXT COLUM N';
  3322     CC_parm_ hl7_err_tx t_age      CONSTANT V ARCHAR2(50 ) := 'OLDE ST HL7 ERR OR TEXT DA YS';
  3323     CC_parm_ last_hl7_i d          CONSTANT V ARCHAR2(50 ) := 'LAST  HL7 ID PR OCESSED';
  3324     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS';
  3325     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'HL7  NULL INTER NAL_ERROR_ TEXT COLUM N';
  3326     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Hl7_ Txn_Log_Nu ll_Err_Col _Sp';
  3327     CC_yes                                  V ARCHAR2(1)  := 'Y';
  3328  
  3329   -- VARIABL ES
  3330  
  3331     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  3332     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  3333  
  3334     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  3335     VC_insta nce_name                       V ARCHAR2(16 );
  3336     VC_proce ss_duratio n                   V ARCHAR2(25 );
  3337     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  3338     VC_sql_s tatement                       V ARCHAR2(20 00);
  3339  
  3340     VD_log_d ate                            D ATE;
  3341     VD_proce ss_end_dat e                   D ATE;
  3342     VD_proce ss_start_d ate                 D ATE;
  3343     VD_rec_g roup_date                      D ATE;
  3344  
  3345     VN_job_c ount                           N UMBER := 0 ;
  3346     VN_job_n umber                          N UMBER;
  3347     VN_max_l og_id                          N UMBER := 0 ;
  3348     VN_parm_ hl7_err_tx t_age               N UMBER;
  3349     VN_parm_ log_file_a ge                  N UMBER;
  3350     VN_parm_ last_log_i d                   N UMBER := 0 ;
  3351     VN_parm_ rows_to_pr ocess               N UMBER;
  3352     VN_pass_ count                          N UMBER := 0 ;
  3353     VN_rec_c ount                           N UMBER := 0 ;
  3354     VN_updat e_count                        N UMBER := 0 ;
  3355  
  3356   -- CURSORS
  3357  
  3358     CURSOR C _hl7_id IS
  3359       SELECT     Hl7_tr ansaction_ log_id
  3360       FROM       Hl7_tr ansaction_ log
  3361       WHERE      Hl7_tr ansaction_ log_id > V N_parm_las t_log_id
  3362       AND        Record _created_d ate < TRUN C(SYSDATE)  - VN_parm _hl7_err_t xt_age
  3363       AND        Intern al_error_t ext IS NOT  NULL;
  3364  
  3365   -- TYPES
  3366  
  3367     TYPE TT_ hl7_id IS
  3368       TABLE  OF ADR.Hl7 _Transacti on_Log.Hl7 _transacti on_log_id% TYPE;
  3369  
  3370   -- MEMORY  TABLES
  3371  
  3372     T_hl7_id                                T T_hl7_id;
  3373  
  3374   -- ******* ********** ********** ********** ********** ********** ********** *******
  3375   -- *
  3376   -- *  MAIN  PROCEDURE :
  3377   -- *
  3378   -- ******* ********** ********** ********** ********** ********** ********** *******
  3379  
  3380   BEGIN
  3381  
  3382     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  3383     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3384  
  3385     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  3386     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3387  
  3388     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  3389     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3390  
  3391     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  3392     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3393  
  3394     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  QUERY PARA LLEL 8';
  3395     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3396  
  3397     VC_sql_s tatement:= 'ALTER SES SION FORCE  PARALLEL  DML PARALL EL 8';
  3398     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  3399  
  3400     VD_rec_g roup_date  := TRUNC(S YSDATE);
  3401  
  3402     VD_log_d ate := SYS DATE;
  3403     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3404                                 PD _job_log_d ate => VD_ log_date,
  3405                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  3406                                 PD _date1 =>  VD_rec_gro up_date,
  3407                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3408  
  3409   -- ******* ********** ********** ********** ********** ********** ********** ********
  3410   -- *
  3411   -- * Valid ate input  parameters
  3412   -- *
  3413   -- ******* ********** ********** ********** ********** ********** ********** ********
  3414  
  3415   -- * Check  run stand alone flag
  3416  
  3417     IF PB_ru n_standalo ne IS NULL
  3418      OR NOT  PB_run_sta ndalone TH EN
  3419  
  3420       VB_run _standalon e := FALSE ;
  3421       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3422  
  3423     ELSE
  3424  
  3425       VB_run _standalon e := TRUE;
  3426       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3427  
  3428     END IF;
  3429  
  3430   -- * Check  run on re port insta nce flag
  3431  
  3432     IF PB_al low_rpt_in st IS NULL
  3433      OR NOT  PB_allow_r pt_inst TH EN
  3434  
  3435       VB_all ow_rpt_ins t := FALSE ;
  3436       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  3437  
  3438     ELSE
  3439  
  3440       VB_all ow_rpt_ins t := TRUE;
  3441       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  3442  
  3443     END IF;
  3444  
  3445   -- ******* ********** ********** ********** ********** ********** ********** ********
  3446   -- *
  3447   -- * Retri eve proces sing param eters
  3448   -- *
  3449   -- ******* ********** ********** ********** ********** ********** ********** ********
  3450  
  3451   -- Process  Parameter  OLDEST HL 7 ERROR TE XT DAYS KE PT
  3452  
  3453     BEGIN
  3454  
  3455       SELECT     Value
  3456       INTO       VN_par m_hl7_err_ txt_age
  3457       FROM       ADRMGT .Adr_Param eter
  3458       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  3459       AND        Parame ter_name =  'OLDEST H L7 ERROR T EXT DAYS K EPT';
  3460  
  3461       IF VN_ parm_hl7_e rr_txt_age  IS NULL T HEN
  3462  
  3463         VD_l og_date :=  SYSDATE;
  3464         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3465                                      PD_job_l og_date =>  VD_log_da te,
  3466                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3467                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST H L7 ERROR T EXT DAYS K EPT is NUL L. Termina ting proce ss.',1,200 0),
  3468                                      PD_date1  => VD_rec _group_dat e,
  3469                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3470  
  3471         RETU RN;
  3472  
  3473       END IF ;
  3474  
  3475     EXCEPTIO N
  3476  
  3477       WHEN N O_DATA_FOU ND THEN
  3478  
  3479         VD_l og_date :=  SYSDATE;
  3480         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3481                                      PD_job_l og_date =>  VD_log_da te,
  3482                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3483                                      PC_job_l og_message  => 'Param eter for O LDEST HL7  ERROR TEXT  DAYS KEPT  was not f ound. Term inating pr ocess.',
  3484                                      PD_date1  => VD_rec _group_dat e,
  3485                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3486  
  3487         RETU RN;
  3488  
  3489       WHEN O THERS THEN
  3490  
  3491         VD_l og_date :=  SYSDATE;
  3492         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3493                                      PD_job_l og_date =>  VD_log_da te,
  3494                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3495                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST HL 7 ERROR TE XT DAYS KE PT. Termin ating proc ess. '
  3496                                                                      || SQLERR M,1,2000),
  3497                                      PD_date1  => VD_rec _group_dat e,
  3498                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3499  
  3500         RETU RN;
  3501  
  3502     END;
  3503  
  3504   -- Process  Parameter  OLDEST LO G FILE DAY S KEPT
  3505  
  3506     BEGIN
  3507  
  3508       SELECT     Value
  3509       INTO       VN_par m_log_file _age
  3510       FROM       ADRMGT .Adr_Param eter
  3511       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  3512       AND        Parame ter_name =  'OLDEST L OG FILE DA YS KEPT';
  3513  
  3514       IF VN_ parm_log_f ile_age IS  NULL THEN
  3515  
  3516         VD_l og_date :=  SYSDATE;
  3517         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3518                                      PD_job_l og_date =>  VD_log_da te,
  3519                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3520                                      PC_job_l og_message  => SUBSTR ('Paramete r OLDEST L OG FILE DA YS KEPT is  NULL. Ter minating p rocess.',1 ,2000),
  3521                                      PD_date1  => VD_rec _group_dat e,
  3522                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3523  
  3524         RETU RN;
  3525  
  3526       END IF ;
  3527  
  3528     EXCEPTIO N
  3529  
  3530       WHEN N O_DATA_FOU ND THEN
  3531  
  3532         VD_l og_date :=  SYSDATE;
  3533         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3534                                      PD_job_l og_date =>  VD_log_da te,
  3535                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3536                                      PC_job_l og_message  => 'Param eter for O LDEST LOG  FILE DAYS  KEPT was n ot found.  Terminatin g process. ',
  3537                                      PD_date1  => VD_rec _group_dat e,
  3538                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3539  
  3540         RETU RN;
  3541  
  3542       WHEN O THERS THEN
  3543  
  3544         VD_l og_date :=  SYSDATE;
  3545         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3546                                      PD_job_l og_date =>  VD_log_da te,
  3547                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3548                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  OLDEST LO G FILE DAY S KEPT. Te rminating  process. '
  3549                                                                      || SQLERR M,1,2000),
  3550                                      PD_date1  => VD_rec _group_dat e,
  3551                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3552  
  3553         RETU RN;
  3554  
  3555     END;
  3556  
  3557   -- Process  Parameter  ROWS TO P ROCESS
  3558  
  3559     BEGIN
  3560  
  3561       SELECT     Value
  3562       INTO       VN_par m_rows_to_ process
  3563       FROM       ADRMGT .Adr_Param eter
  3564       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  3565       AND        Parame ter_name =  'ROWS TO  PROCESS';
  3566  
  3567       IF VN_ parm_rows_ to_process  IS NULL T HEN
  3568  
  3569         VD_l og_date :=  SYSDATE;
  3570         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3571                                      PD_job_l og_date =>  VD_log_da te,
  3572                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3573                                      PC_job_l og_message  => SUBSTR ('Paramete r ROWS TO  PROCESS is  NULL. Ter minating p rocess.',1 ,2000),
  3574                                      PD_date1  => VD_rec _group_dat e,
  3575                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3576  
  3577         RETU RN;
  3578  
  3579       END IF ;
  3580  
  3581     EXCEPTIO N
  3582  
  3583       WHEN N O_DATA_FOU ND THEN
  3584  
  3585         VD_l og_date :=  SYSDATE;
  3586         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3587                                      PD_job_l og_date =>  VD_log_da te,
  3588                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3589                                      PC_job_l og_message  => 'Param eter for R OWS TO PRO CESS was n ot found.  Terminatin g process. ',
  3590                                      PD_date1  => VD_rec _group_dat e,
  3591                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3592  
  3593         RETU RN;
  3594  
  3595       WHEN O THERS THEN
  3596  
  3597         VD_l og_date :=  SYSDATE;
  3598         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3599                                      PD_job_l og_date =>  VD_log_da te,
  3600                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3601                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  ROWS TO P ROCESS. Te rminating  process. '
  3602                                                                      || SQLERR M,1,2000),
  3603                                      PD_date1  => VD_rec _group_dat e,
  3604                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3605  
  3606         RETU RN;
  3607  
  3608     END;
  3609  
  3610   -- Process  Parameter  LAST PROC ESSED LOG  ID
  3611  
  3612     BEGIN
  3613  
  3614       SELECT     Value
  3615       INTO       VN_par m_last_log _id
  3616       FROM       ADRMGT .Adr_Param eter
  3617       WHERE      Applic ation_name  = 'HL7 NU LL INTERNA L_ERROR_TE XT COLUMN'
  3618       AND        Parame ter_name =  'LAST PRO CESSED LOG  ID';
  3619  
  3620       IF VN_ parm_last_ log_id IS  NULL THEN
  3621  
  3622         VD_l og_date :=  SYSDATE;
  3623         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3624                                      PD_job_l og_date =>  VD_log_da te,
  3625                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3626                                      PC_job_l og_message  => SUBSTR ('Paramete r LAST PRO CESSED LOG  ID is NUL L. Termina ting proce ss.',1,200 0),
  3627                                      PD_date1  => VD_rec _group_dat e,
  3628                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3629  
  3630         RETU RN;
  3631  
  3632       END IF ;
  3633  
  3634     EXCEPTIO N
  3635  
  3636       WHEN N O_DATA_FOU ND THEN
  3637  
  3638         VD_l og_date :=  SYSDATE;
  3639         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3640                                      PD_job_l og_date =>  VD_log_da te,
  3641                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3642                                      PC_job_l og_message  => 'Param eter for L AST PROCES SED LOG ID  was not f ound. Term inating pr ocess.',
  3643                                      PD_date1  => VD_rec _group_dat e,
  3644                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3645  
  3646         RETU RN;
  3647  
  3648       WHEN O THERS THEN
  3649  
  3650         VD_l og_date :=  SYSDATE;
  3651         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3652                                      PD_job_l og_date =>  VD_log_da te,
  3653                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unable to  retrieve  job parame ters',1,60 ),
  3654                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  LAST PROC ESSED LOG  ID. Termin ating proc ess. '
  3655                                                                      || SQLERR M,1,2000),
  3656                                      PD_date1  => VD_rec _group_dat e,
  3657                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3658  
  3659         RETU RN;
  3660  
  3661     END;
  3662  
  3663   -- Write o ut Paramet er log mes sages for  submitted  job
  3664  
  3665     VD_log_d ate := SYS DATE;
  3666     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3667                                 PD _job_log_d ate => VD_ log_date,
  3668                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3669                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  3670                                 PD _date1 =>  VD_rec_gro up_date,
  3671                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3672  
  3673     VD_log_d ate := SYS DATE;
  3674     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3675                                 PD _job_log_d ate => VD_ log_date,
  3676                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3677                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  3678                                 PD _date1 =>  VD_rec_gro up_date,
  3679                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3680  
  3681     VD_log_d ate := SYS DATE;
  3682     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3683                                 PD _job_log_d ate => VD_ log_date,
  3684                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  3685                                 PC _job_log_m essage =>  SUBSTR(' R ows to pro cess each  loop: ' ||  NVL(TO_CH AR(PN_rows _to_proces s),'NULL') ,1,2000),
  3686                                 PD _date1 =>  VD_rec_gro up_date,
  3687                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3688  
  3689  
  3690     VD_log_d ate := SYS DATE;
  3691     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3692                                 PD _job_log_d ate => VD_ log_date,
  3693                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3694                                 PC _job_log_m essage =>  SUBSTR(' O LDEST HL7  ERROR TEXT  DAYS KEPT : ' || VN_ parm_hl7_e rr_txt_age ,1,2000),
  3695                                 PD _date1 =>  VD_rec_gro up_date,
  3696                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3697  
  3698     VD_log_d ate := SYS DATE;
  3699     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3700                                 PD _job_log_d ate => VD_ log_date,
  3701                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3702                                 PC _job_log_m essage =>  SUBSTR(' O LDEST LOG  FILE DAYS  KEPT: ' ||  VN_parm_l og_file_ag e,1,2000),
  3703                                 PD _date1 =>  VD_rec_gro up_date,
  3704                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3705  
  3706     VD_log_d ate := SYS DATE;
  3707     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3708                                 PD _job_log_d ate => VD_ log_date,
  3709                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3710                                 PC _job_log_m essage =>  SUBSTR(' R OWS TO PRO CESS (in e ach loop):  ' || NVL( TO_CHAR(VN _parm_rows _to_proces s),'NULL') ,1,2000),
  3711                                 PD _date1 =>  VD_rec_gro up_date,
  3712                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3713  
  3714     VD_log_d ate := SYS DATE;
  3715     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  3716                                 PD _job_log_d ate => VD_ log_date,
  3717                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  3718                                 PC _job_log_m essage =>  SUBSTR(' L AST PROCES SED LOG ID : ' || NVL (TO_CHAR(V N_parm_las t_log_id), 'NULL'),1, 2000),
  3719                                 PD _date1 =>  VD_rec_gro up_date,
  3720                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  3721  
  3722   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  3723  
  3724     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  3725  
  3726       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  3727  
  3728       VD_log _date := S YSDATE;
  3729       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3730                                    PD_job_log _date => V D_log_date ,
  3731                                    PC_job_sta tus => SUB STR('WARNI NG     - J ob table p arameters' ,1,60),
  3732                                    PC_job_log _message = > SUBSTR('  Processin g paramete r ROWS TO  PROCESS (i n each loo p) has bee n overridd en.'
  3733                                                              || ' T he overrid e value is : ' || NVL (TO_CHAR(V N_parm_row s_to_proce ss),'NULL' ),1,2000),
  3734                                    PD_date1 = > VD_rec_g roup_date,
  3735                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3736  
  3737     END IF;
  3738  
  3739   -- ******* ********** ********** ********** ********** ********** ********** ********
  3740   -- *
  3741   -- * Check  to see if  process i s running  on a repor ting datab ase.
  3742   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  3743   -- *
  3744   -- ******* ********** ********** ********** ********** ********** ********** ********
  3745  
  3746     IF NOT V B_allow_rp t_inst THE N
  3747  
  3748       BEGIN
  3749  
  3750         VD_l og_date :=  SYSDATE;
  3751         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3752                                      PD_job_l og_date =>  VD_log_da te,
  3753                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  3754                                      PD_date1  => VD_rec _group_dat e,
  3755                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3756  
  3757         SELE CT    Inst ance_name
  3758         INTO       VC_i nstance_na me
  3759         FROM       V$in stance;
  3760  
  3761         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  3762  
  3763           VD _log_date  := SYSDATE ;
  3764           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3765                                        PD_job _log_date  => VD_log_ date,
  3766                                        PC_job _status =>  SUBSTR('E RROR        - Process ing Failed ',1,60),
  3767                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  3768                                                                     || VC_inst ance_name
  3769                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  3770                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  3771                                        PD_dat e1 => VD_r ec_group_d ate,
  3772                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3773  
  3774           RE TURN;
  3775  
  3776         END  IF;
  3777  
  3778       EXCEPT ION
  3779  
  3780         WHEN  OTHERS TH EN
  3781  
  3782           VD _log_date  := SYSDATE ;
  3783           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3784                                        PD_job _log_date  => VD_log_ date,
  3785                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to retriev e instance  name',1,6 0),
  3786                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  3787                                        PD_dat e1 => VD_r ec_group_d ate,
  3788                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3789  
  3790           RE TURN;
  3791  
  3792       END;
  3793  
  3794     END IF;
  3795  
  3796   -- ******* ********** ********** ********** ********** ********** ********** ********
  3797   -- *
  3798   -- * Check  to see if  the job h as already  run today
  3799   -- *  - If  running i n stand-al one mode,  don't chec k.
  3800   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  3801   -- *
  3802   -- ******* ********** ********** ********** ********** ********** ********** ********
  3803  
  3804     IF NOT P B_run_stan dalone THE N
  3805  
  3806       BEGIN
  3807  
  3808         VD_l og_date :=  SYSDATE;
  3809         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3810                                      PD_job_l og_date =>  VD_log_da te,
  3811                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  3812                                      PD_date1  => VD_rec _group_dat e,
  3813                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3814  
  3815         SELE CT    COUN T(*)
  3816         INTO       VN_r ec_count
  3817         FROM       ADRM GT.Job_Pro cess_Logs
  3818         WHER E     Job_ name = CC_ process_na me
  3819         AND        Date 1 = VD_rec _group_dat e
  3820         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  3821  
  3822         IF V N_rec_coun t > 0 THEN
  3823  
  3824           VD _log_date  := SYSDATE ;
  3825           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3826                                        PD_job _log_date  => VD_log_ date,
  3827                                        PC_job _status =>  SUBSTR('W ARNING      - This da te has alr eady been  processed' ,1,60),
  3828                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  3829                                        PD_dat e1 => VD_r ec_group_d ate,
  3830                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3831  
  3832           RE TURN;
  3833  
  3834         END  IF;
  3835  
  3836       EXCEPT ION
  3837  
  3838         WHEN  OTHERS TH EN
  3839  
  3840           VD _log_date  := SYSDATE ;
  3841           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  3842                                        PD_job _log_date  => VD_log_ date,
  3843                                        PC_job _status =>  SUBSTR('E RROR        - Unable  to verify  if job has  already r un',1,60),
  3844                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  3845                                        PD_dat e1 => VD_r ec_group_d ate,
  3846                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  3847  
  3848           RE TURN;
  3849  
  3850       END;
  3851  
  3852     END IF;
  3853  
  3854   -- ******* ********** ********** ********** ********** ********** ********** ********
  3855   -- *
  3856   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  3857   -- *  - If  yes, then  end this  job.
  3858   -- *
  3859   -- ******* ********** ********** ********** ********** ********** ********** ********
  3860  
  3861     SELECT C OUNT(*)
  3862     INTO   V N_job_coun t
  3863     FROM   S YS.DBA_JOB S_RUNNING  R,
  3864            S YS.DBA_JOB S J
  3865     WHERE  J .JOB = R.J OB
  3866     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  3867  
  3868     IF VN_jo b_count >  1 THEN
  3869  
  3870       VD_log _date := S YSDATE;
  3871       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3872                                    PD_job_log _date => V D_log_date ,
  3873                                    PC_job_sta tus => SUB STR('WARNI NG     - C heck for r unning job s',1,60),
  3874                                    PC_job_log _message = > SUBSTR(' There is a nother '
  3875                                                                || C C_sp_name
  3876                                                                || '  job runni ng.'
  3877                                                                || '  Exiting j ob without  running.' ,1,2000),
  3878                                    PD_date1 = > VD_rec_g roup_date,
  3879                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3880  
  3881       RETURN ;
  3882  
  3883     ELSE
  3884  
  3885       IF VB_ run_standa lone THEN
  3886  
  3887         VD_l og_date :=  SYSDATE;
  3888         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3889                                      PD_job_l og_date =>  VD_log_da te,
  3890                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  3891                                      PD_date1  => VD_rec _group_dat e,
  3892                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3893  
  3894       ELSE
  3895  
  3896         SELE CT    MAX( J.Job)
  3897         INTO       VN_j ob_number
  3898         FROM       SYS. DBA_JOBS_R UNNING R,
  3899                    SYS. DBA_JOBS J
  3900         WHER E     J.JO B = R.JOB
  3901         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  3902  
  3903         VD_l og_date :=  SYSDATE;
  3904         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3905                                      PD_job_l og_date =>  VD_log_da te,
  3906                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  3907                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  3908                                                                      || VN_job _number,1, 2000),
  3909                                      PD_date1  => VD_rec _group_dat e,
  3910                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3911  
  3912       END IF ;
  3913  
  3914     END IF;
  3915  
  3916   -- ******* ********** ********** ********** ********** ********** ********** ********
  3917   -- *
  3918   -- * Main  processing  loop
  3919   -- *
  3920   -- ******* ********** ********** ********** ********** ********** ********** ********
  3921  
  3922     VN_pass_ count := 0 ;
  3923     VN_updat e_count :=  0;
  3924     VD_proce ss_start_d ate := SYS DATE;
  3925  
  3926   -- ******* ********** ********** ********** ********** ********** ********** ********
  3927   -- * Remov e old proc ess log ro ws
  3928   -- ******* ********** ********** ********** ********** ********** ********** ********
  3929     BEGIN
  3930  
  3931       VD_log _date := S YSDATE;
  3932       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3933                                    PD_job_log _date => V D_log_date ,
  3934                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  3935                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  3936                                                                   | | VN_parm_ log_file_a ge
  3937                                                                   | | ' days o ld',1,2000 ),
  3938                                    PD_date1 = > VD_rec_g roup_date,
  3939                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3940  
  3941       DELETE
  3942       FROM       ADRMGT .Job_Proce ss_Logs
  3943       WHERE      Job_na me = CC_pr ocess_name
  3944       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  3945  
  3946       COMMIT ;
  3947  
  3948       VD_log _date := S YSDATE;
  3949       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3950                                    PD_job_log _date => V D_log_date ,
  3951                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  3952                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  3953                                                                   | | VN_parm_ log_file_a ge
  3954                                                                   | | ' days o ld',1,2000 ),
  3955                                    PD_date1 = > VD_rec_g roup_date,
  3956                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3957  
  3958  
  3959     EXCEPTIO N
  3960  
  3961       WHEN N O_DATA_FOU ND THEN
  3962  
  3963         NULL ;
  3964  
  3965       WHEN O THERS THEN
  3966  
  3967         VD_l og_date :=  SYSDATE;
  3968         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  3969                                      PD_job_l og_date  = > VD_log_d ate,
  3970                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess logs .',1,60),
  3971                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  3972                                      PD_date1  => VD_rec _group_dat e,
  3973                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  3974  
  3975     END;
  3976  
  3977   -- ******* ********** ********** ********** ********** ********** ********** ********
  3978   -- * Remov e old proc ess error  rows
  3979   -- ******* ********** ********** ********** ********** ********** ********** ********
  3980  
  3981     BEGIN
  3982  
  3983       VD_log _date := S YSDATE;
  3984       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  3985                                    PD_job_log _date => V D_log_date ,
  3986                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  3987                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  3988                                                                   | | VN_parm_ log_file_a ge
  3989                                                                   | | ' days o ld',1,2000 ),
  3990                                    PD_date1 = > VD_rec_g roup_date,
  3991                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  3992  
  3993       DELETE
  3994       FROM       ADRMGT .Job_Proce ss_Errs
  3995       WHERE      Job_na me = CC_pr ocess_name
  3996       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  3997  
  3998       COMMIT ;
  3999  
  4000       VD_log _date := S YSDATE;
  4001       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4002                                    PD_job_log _date => V D_log_date ,
  4003                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  4004                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  4005                                                                   | | VN_parm_ log_file_a ge
  4006                                                                   | | ' days o ld',1,2000 ),
  4007                                    PD_date1 = > VD_rec_g roup_date,
  4008                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4009  
  4010     EXCEPTIO N
  4011  
  4012       WHEN N O_DATA_FOU ND THEN
  4013  
  4014         NULL ;
  4015  
  4016       WHEN O THERS THEN
  4017  
  4018         VD_l og_date :=  SYSDATE;
  4019         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4020                                      PD_job_l og_date  = > VD_log_d ate,
  4021                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror remov ing old pr ocess erro rs.',1,60) ,
  4022                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  4023                                      PD_date1  => VD_rec _group_dat e,
  4024                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4025  
  4026     END;
  4027  
  4028   -- ******* ********** ********** ********** ********** ********** ********** ********
  4029   -- * Main  record cur sor logic
  4030   -- ******* ********** ********** ********** ********** ********** ********** ********
  4031  
  4032     BEGIN
  4033  
  4034       VN_max _log_id :=  0;
  4035       VN_pas s_count :=  0;
  4036       VN_upd ate_count  := 0;
  4037  
  4038       OPEN C _hl7_id;
  4039  
  4040       LOOP
  4041  
  4042         FETC H C_hl7_id
  4043         BULK  COLLECT I NTO T_hl7_ id
  4044         LIMI T VN_parm_ rows_to_pr ocess;
  4045  
  4046         EXIT  WHEN T_hl 7_id.COUNT  = 0;
  4047  
  4048         FORA LL I_hl7_i d IN T_hl7 _id.FIRST. .T_hl7_id. last
  4049           UP DATE    AD R.Hl7_tran saction_lo g
  4050           SE T       In ternal_err or_text =  NULL
  4051           WH ERE     Hl 7_transact ion_log_id  = T_hl7_i d(I_hl7_id );
  4052  
  4053         COMM IT;
  4054  
  4055         FOR  I_hl7_id I N T_hl7_id .FIRST..T_ hl7_id.las t LOOP
  4056  
  4057           IF  T_hl7_id( I_hl7_id)  > VN_max_l og_id THEN
  4058  
  4059              VN_max_log _id := T_h l7_id(I_hl 7_id);
  4060  
  4061           EN D IF;
  4062  
  4063         END  LOOP;
  4064  
  4065         VN_p ass_count  := VN_pass _count + 1 ;
  4066  
  4067         VN_u pdate_coun t := VN_up date_count  + T_hl7_i d.COUNT;
  4068  
  4069       END LO OP;
  4070  
  4071       CLOSE  C_hl7_id;
  4072  
  4073       BEGIN
  4074  
  4075         IF N VL(VN_max_ log_id,0)  <> 0 THEN
  4076  
  4077           UP DATE    AD RMGT.Adr_P arameter
  4078           SE T       Va lue = VN_m ax_log_id
  4079           WH ERE     Ap plication_ name = 'HL 7 NULL INT ERNAL_ERRO R_TEXT COL UMN'
  4080           AN D       Pa rameter_na me = 'LAST  PROCESSED  LOG ID';
  4081  
  4082           CO MMIT;
  4083  
  4084         ELSE
  4085  
  4086           VN _max_log_i d := VN_pa rm_last_lo g_id;
  4087  
  4088         END  IF;
  4089  
  4090       EXCEPT ION
  4091  
  4092         WHEN  OTHERS TH EN
  4093  
  4094           VD _log_date  := SYSDATE ;
  4095           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4096                                        PD_job _log_date   => VD_log _date,
  4097                                        PC_job _status =>  SUBSTR('E RROR        - Unknown  error upd ating LAST  PROCESSED  LOG ID.', 1,60),
  4098                                        PC_job _log_messa ge => SUBS TR('Last p rocessed l og id: ' | | VN_max_l og_id
  4099                                                                        || '. '  || SQLERR M,1,2000),
  4100                                        PD_dat e1 => VD_r ec_group_d ate,
  4101                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4102  
  4103           RE TURN;
  4104  
  4105       END;
  4106  
  4107   -- Process  completio n informat ion
  4108  
  4109       VD_log _date := S YSDATE;
  4110       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4111                                    PD_job_log _date => V D_log_date ,
  4112                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4113                                    PD_date1 = > VD_rec_g roup_date,
  4114                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4115                                    PN_numeric 2 => VN_pa ss_count,
  4116                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  4117  
  4118       VD_log _date := S YSDATE;
  4119       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4120                                    PD_job_log _date => V D_log_date ,
  4121                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4122                                    PD_date1 = > VD_rec_g roup_date,
  4123                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4124                                    PN_numeric 2 => VN_up date_count ,
  4125                                    PC_text2 = > SUBSTR(' Updated Re cord Count ',1,255));
  4126  
  4127       VD_log _date := S YSDATE;
  4128       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4129                                    PD_job_log _date => V D_log_date ,
  4130                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  4131                                    PD_date1 = > VD_rec_g roup_date,
  4132                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  4133                                    PN_numeric 2 => VN_ma x_log_id,
  4134                                    PC_text2 = > SUBSTR(' Last proce ssed log i d',1,255)) ;
  4135  
  4136       VD_pro cess_end_d ate := SYS DATE;
  4137       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  4138                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  4139                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  4140                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  4141                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  4142  
  4143       VD_log _date := S YSDATE;
  4144       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4145                                    PD_job_log _date => V D_log_date ,
  4146                                    PC_job_sta tus => SUB STR('SUCCE SS     - P rocessing  Completed' ,1,60),
  4147                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  4148                                    PD_date1 = > VD_rec_g roup_date,
  4149                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4150  
  4151     EXCEPTIO N
  4152  
  4153       WHEN O THERS THEN
  4154  
  4155         VD_l og_date :=  SYSDATE;
  4156         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4157                                      PD_job_l og_date  = > VD_log_d ate,
  4158                                      PC_job_s tatus => S UBSTR('ERR OR       -  Unknown e rror updat ing Intern al_error_t ext.',1,60 ),
  4159                                      PC_job_l og_message  => SUBSTR ('Cursor L oop Count:  ' || VN_p ass_count
  4160                                                                      || ' Upda ted Record  Count: '  || VN_upda te_count
  4161                                                                      || '. ' | | SQLERRM, 1,2000),
  4162                                      PD_date1  => VD_rec _group_dat e,
  4163                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4164  
  4165         RETU RN;
  4166  
  4167     END;
  4168  
  4169   EXCEPTION
  4170  
  4171     WHEN OTH ERS THEN
  4172  
  4173       ROLLBA CK;
  4174  
  4175       VD_log _date := S YSDATE;
  4176       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4177                                    PD_job_err or_date  = > VD_log_d ate,
  4178                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  4179                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Hl7_Txn_Lo g_Null_Err _Col_Sp.'
  4180                                                                  ||  SQLERRM,1 ,2000),
  4181                                    PD_date1 = > VD_rec_g roup_date,
  4182                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4183  
  4184       VD_log _date := S YSDATE;
  4185       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4186                                    PD_job_log _date => V D_log_date ,
  4187                                    PC_job_sta tus => SUB STR('ERROR        - U nknown pro cessing er ror',1,60) ,
  4188                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  4189                                    PD_date1 = > VD_rec_g roup_date,
  4190                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4191  
  4192   END Hl7_Tx n_Log_Null _Err_Col_S p;
  4193   /
  4194   DROP PROCE DURE ADR.L OAD_MISSIN G_RESIDENT _ADDR_SP;
  4195  
  4196   CREATE OR  REPLACE PR OCEDURE AD R.LOAD_MIS SING_RESID ENT_ADDR_S P(
  4197       p_bulk _limit         NUMBER  DEFAULT 1 000)
  4198   IS
  4199  
  4200      -- 5492 34: Create  A Job to  Insert Res idential A ddresses f or Persons  with Perm anent but   without R esidential  addresses
  4201      --gc_sc hema_owner _name         VARCHAR 2 (10) :=  'ADR';
  4202      gc_prog ram_name               VARCHAR2  (40) := 'L OAD_MISSIN G_RESIDENT _ADDR_SP';
  4203  
  4204      dml_err ors         EXCEPTION ;
  4205      PRAGMA  EXCEPTION_ INIT(dml_e rrors, -24 381);
  4206  
  4207      time_a      INTEGE R;
  4208      time_b      INTEGE R;
  4209      time_c      INTEGE R;
  4210      time_d      INTEGE R;
  4211  
  4212      VC_msg_ step        VARCHAR2( 200);
  4213      VC_erro r_msg   VA RCHAR2(200 );
  4214      VN_tota l_count      NUMBER : = 0;
  4215  
  4216      VN_elap sed_time    NUMBER;
  4217  
  4218      VN_rowc nt_fetched   NUMBER : = 0;
  4219      VN_EXCE PTION_CNT   PLS_INTEG ER;
  4220  
  4221      C_PERM_ ADDRESSTYP E_ID CONST ANT NUMBER  := 144901 2;
  4222      C_RESI_ ADDRESSTYP E_ID CONST ANT NUMBER  := 180741 2;
  4223  
  4224  
  4225      TYPE NE W_RESIDENT _ADDRESS_T AB IS TABL E OF ADDRE SS%ROWTYPE   INDEX BY  BINARY_IN TEGER;
  4226      L_new_r esident_ad dr_tab     NEW_RESIDE NT_ADDRESS _TAB;
  4227  
  4228      c_limit   CONSTANT  PLS_INTEG ER := p_bu lk_limit;
  4229      gc_inte ration  PL S_INTEGER  := 0;
  4230  
  4231      CURSOR  GetPermAdd rInfo_C  I S
  4232      WITH AD D_RES_ADDR  AS
  4233        ( SEL ECT  perso n_id
  4234          FRO M (
  4235              SELECT DIS TINCT pers on_id
  4236              FROM addre ss a
  4237              WHERE STD_ ADDRESSTYP E_ID = C_P ERM_ADDRES STYPE_ID   -- permane nt addr
  4238              AND person _id IS NOT  NULL
  4239           MI NUS
  4240              SELECT DIS TINCT pers on_id
  4241              FROM addre ss a
  4242              WHERE  STD _ADDRESSTY PE_ID = C_ RESI_ADDRE SSTYPE_ID   -- reside ntial addr
  4243              AND person _id IS NOT  NULL
  4244          )
  4245        )
  4246      SELECT  *
  4247      FROM AD DRESS a
  4248      WHERE E XISTS (SEL ECT 1
  4249                    FROM  ADD_RES_A DDR d
  4250                    WHER E a.person _id = d.pe rson_id)
  4251      AND a.S TD_ADDRESS TYPE_ID =  C_PERM_ADD RESSTYPE_I D  -- perm anent addr
  4252      AND a.p erson_id I S NOT NULL ;
  4253  
  4254   BEGIN
  4255  
  4256       -- === ========== ========== ========== ========== ========== ===
  4257       --
  4258       -- Beg in Bulk Co llect Fetc h
  4259       --
  4260       -- === ========== ========== ========== ========== ========== ===
  4261       EXECUT E IMMEDIAT E 'ALTER S ESSION SET  PARALLEL_ FORCE_LOCA L=TRUE';
  4262  
  4263       DBMS_A PPLICATION _INFO.set_ client_inf o(gc_progr am_name || ': '||p_bu lk_limit|| ' STARTED  '||TO_CHAR (SYSDATE,' MM/DD/YY H H24:MI:SS' ));
  4264  
  4265       time_a  := dbms_u tility.get _time;
  4266       VN_tot al_count : = 0;
  4267  
  4268       VC_msg _step := ' OPEN CURSO R';
  4269  
  4270      ADRMGT. Job_Proces s_Log_Sp(P C_job_name  => gc_pro gram_name,
  4271                                      PD_job_l og_date =>  SYSDATE,
  4272                                      PC_job_s tatus => ' INFORMATIO N - Proces s Initiati on',
  4273                                      PC_job_l og_message  => 'Load  missing re sident add resses ',
  4274                                      pc_text1  => 'BULK  LIMIT: '||  c_limit,
  4275                                      PD_date1  => SYSDAT E
  4276                                 );
  4277  
  4278       OPEN G etPermAddr Info_C ;
  4279       LOOP
  4280            g c_interati on := gc_i nteration  + 1;
  4281  
  4282            F ETCH GetPe rmAddrInfo _C BULK CO LLECT INTO  L_new_res ident_addr _tab LIMIT  c_limit;
  4283  
  4284            V N_rowcnt_f etched :=  VN_rowcnt_ fetched +  L_new_resi dent_addr_ tab.COUNT;
  4285  
  4286            V C_msg_step  := 'BULK  LOAD BEGIN S';
  4287  
  4288            t ime_b := d bms_utilit y.get_time ;
  4289  
  4290            F ORALL indx  IN L_new_ resident_a ddr_tab.FI RST.. L_ne w_resident _addr_tab. LAST SAVE  EXCEPTIONS
  4291  
  4292                INSERT / *+ APPEND  */ INTO AD DRESS (
  4293                         ADDRESS_ID  ,
  4294                         PERSON_ID,
  4295                         INSURANCE_ ID,
  4296                         STD_ADDRES STYPE_ID,
  4297                         ADDRESS_CH ANGE_SRC_T YPE_ID,
  4298                         STD_INSTIT UTION_ID,
  4299                         ADDRESS_IN VALID_TYPE _ID,
  4300                         NCOA_STATU S_TYPE_ID,
  4301                         NCOA_DELIV ERY_TYPE_I D,
  4302                         NCOA_ZIP_M ATCH_TYPE_ ID,
  4303                         NCOA_ZIP_N O_MATCH_TY PE_ID,
  4304                         ADDRESS_LI NE1,
  4305                         ADDRESS_LI NE2,
  4306                         ADDRESS_LI NE3,
  4307                         CITY,
  4308                         STATE_CODE ,
  4309                         COUNTY_COD E,
  4310                         PROVINCE_C ODE,
  4311                         ZIP_CODE,
  4312                         ZIP_PLUS_4 ,
  4313                         POSTAL_COD E,
  4314                         COUNTRY_CO DE,
  4315                         ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  4316                         ADDRESS_IN VALIDATED_ DATE,
  4317                         NCOA_ADDRE SS_CHECK_D ATE,
  4318                         ADDRESS_ST ART_DATE_T XT,
  4319                         ADDRESS_EN D_DATE_TXT ,
  4320                         ADDRESS_PH ONE_NUMBER ,
  4321                         RECORD_CRE ATED_BY,
  4322                         RECORD_CRE ATED_DATE,
  4323                         RECORD_MOD IFIED_BY,
  4324                         RECORD_MOD IFIED_DATE ,
  4325                         RECORD_MOD IFIED_COUN T,
  4326                         RECORD_MOD IFIED_SRC_ NAME,
  4327                         PERSON_REL ATION_ID,
  4328                         CASSCERTIF IEDTYPE_ID ,
  4329                         CASS_CERTI FIED_DATE,
  4330                         PURPOSE_OF _USE_TYPE_ ID)
  4331                    VALU ES(
  4332                         TRANSACTIO N_S.NEXTVA L ,
  4333                         L_new_resi dent_addr_ tab(indx). PERSON_ID,
  4334                         L_new_resi dent_addr_ tab(indx). INSURANCE_ ID,
  4335                         1807412,
  4336                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_SRC_T YPE_ID,
  4337                         L_new_resi dent_addr_ tab(indx). STD_INSTIT UTION_ID,
  4338                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALID_TYPE _ID,
  4339                         L_new_resi dent_addr_ tab(indx). NCOA_STATU S_TYPE_ID,
  4340                         L_new_resi dent_addr_ tab(indx). NCOA_DELIV ERY_TYPE_I D,
  4341                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_M ATCH_TYPE_ ID,
  4342                         L_new_resi dent_addr_ tab(indx). NCOA_ZIP_N O_MATCH_TY PE_ID,
  4343                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE1,
  4344                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE2,
  4345                         L_new_resi dent_addr_ tab(indx). ADDRESS_LI NE3,
  4346                         L_new_resi dent_addr_ tab(indx). CITY,
  4347                         L_new_resi dent_addr_ tab(indx). STATE_CODE ,
  4348                         L_new_resi dent_addr_ tab(indx). COUNTY_COD E,
  4349                         L_new_resi dent_addr_ tab(indx). PROVINCE_C ODE,
  4350                         L_new_resi dent_addr_ tab(indx). ZIP_CODE,
  4351                         L_new_resi dent_addr_ tab(indx). ZIP_PLUS_4 ,
  4352                         L_new_resi dent_addr_ tab(indx). POSTAL_COD E,
  4353                         L_new_resi dent_addr_ tab(indx). COUNTRY_CO DE,
  4354                         L_new_resi dent_addr_ tab(indx). ADDRESS_CH ANGE_EFFEC TIVE_DATE,
  4355                         L_new_resi dent_addr_ tab(indx). ADDRESS_IN VALIDATED_ DATE,
  4356                         L_new_resi dent_addr_ tab(indx). NCOA_ADDRE SS_CHECK_D ATE,
  4357                         L_new_resi dent_addr_ tab(indx). ADDRESS_ST ART_DATE_T XT,
  4358                         L_new_resi dent_addr_ tab(indx). ADDRESS_EN D_DATE_TXT ,
  4359                         L_new_resi dent_addr_ tab(indx). ADDRESS_PH ONE_NUMBER ,
  4360                         '549234',
  4361                         SYSDATE,
  4362                         '549234',
  4363                         SYSDATE,
  4364                         0,
  4365                         L_new_resi dent_addr_ tab(indx). RECORD_MOD IFIED_SRC_ NAME,
  4366                         L_new_resi dent_addr_ tab(indx). PERSON_REL ATION_ID,
  4367                         L_new_resi dent_addr_ tab(indx). CASSCERTIF IEDTYPE_ID ,
  4368                         L_new_resi dent_addr_ tab(indx). CASS_CERTI FIED_DATE,
  4369                         L_new_resi dent_addr_ tab(indx). PURPOSE_OF _USE_TYPE_ ID) ;
  4370  
  4371            c ommit;
  4372  
  4373            V C_msg_step  := 'Displ aying row  count';
  4374  
  4375            - - Rows cou nt added
  4376            F OR I IN 1. .L_new_res ident_addr _tab.COUNT  LOOP
  4377                  VN_tot al_count : = VN_total _count + S QL%BULK_RO WCOUNT(I);
  4378            E ND LOOP;
  4379  
  4380            t ime_c := d bms_utilit y.get_time ;
  4381            V N_elapsed_ time := RO UND((time_ c - time_b )/100/60,2 );
  4382  
  4383            D BMS_APPLIC ATION_INFO .set_clien t_info('It eration# ' || gc_inte ration||'  - Rows: '| |VN_total_ count ||'  - '||VN_el apsed_time ||' min');
  4384  
  4385            A DRMGT.Job_ Process_Lo g_Sp(PC_jo b_name =>  gc_program _name,
  4386                                                PD_job_lo g_date =>  SYSDATE,
  4387                                                PC_job_st atus => 'I NFORMATION  - Iterati on: '|| gc _interatio n,
  4388                                                PC_job_lo g_message  => 'Rows A dded: '||V N_total_co unt||' - E lap(min):  '||VN_elap sed_time,
  4389                                                PD_date1  => SYSDATE
  4390                                 );
  4391  
  4392            E XIT WHEN L _new_resid ent_addr_t ab.COUNT =  0;
  4393  
  4394  
  4395       END LO OP;
  4396  
  4397       CLOSE  GetPermAdd rInfo_C;
  4398  
  4399       DBMS_A PPLICATION _INFO.set_ client_inf o('Total I terations  '|| gc_int eration||'  - Row Add ed"  '||VN _total_cou nt ||' - E lapsed: '| |TO_CHAR(S YSDATE,'MM /DD/YY HH2 4:MI:SS')) ;
  4400  
  4401       time_d  := dbms_u tility.get _time;
  4402  
  4403       VN_ela psed_time  := ROUND(( time_d - t ime_a)/100 /60,2);
  4404  
  4405  
  4406       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  4407                                                PD_job_lo g_date =>  SYSDATE,
  4408                                                PC_job_st atus => 'I NFORMATION  - Process  Ended - E lap(min):  '||VN_elap sed_time,
  4409                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched,
  4410                                                PD_date1  => SYSDATE
  4411                                 );
  4412  
  4413  
  4414     EXCEPTIO N
  4415  
  4416       WHEN d ml_errors  THEN
  4417  
  4418         VN_E XCEPTION_C NT := SQL% BULK_EXCEP TIONS.COUN T;
  4419  
  4420         FOR  I IN 1 ..  VN_EXCEPTI ON_CNT LOO P
  4421              VC_error_m sg :=
  4422                  'ERROR  BULK EXCE PTION: ' | | VC_msg_s tep||CHR(1 0) || SQL% BULK_EXCEP TIONS(I).E RROR_INDEX  ||
  4423                  ' Pers on ID: ' | | L_new_re sident_add r_tab(I).p erson_id | |
  4424                  ' Erro r Msg: ' | | SQLERRM( -SQL%BULK_ EXCEPTIONS (i).ERROR_ CODE);
  4425  
  4426                  ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => gc_pr ogram_name ,
  4427                                                PD_job_lo g_date =>  SYSDATE,
  4428                                                PC_job_st atus => 'E RROR BULK  EXCEPTION  - Row# '|| SQL%BULK_E XCEPTIONS( I).ERROR_I NDEX,
  4429                                                PC_job_lo g_message  => 'Total  Rows Added /Rows Proc essed: '|| VN_total_c ount||'/'| |VN_rowcnt _fetched|| ' Elapsed:  '||VN_ela psed_time,
  4430                                                PC_text1  => SUBSTR( VC_error_m sg,1,200),
  4431                                                PD_date1  => SYSDATE
  4432                                 );
  4433  
  4434               DBMS_OUTP UT.put_lin e(VC_error _msg);
  4435  
  4436         END  LOOP;
  4437  
  4438      WHEN OT HERS THEN
  4439  
  4440         VC_e rror_msg : ='ERROR EX CEPTION -  '||VC_msg_ step||CHR( 10)|| SUBS TR('Unkown  Error: '| |SQLERRM,1 ,200);
  4441  
  4442         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => gc_ program_na me,
  4443                                                        P D_job_log_ date => SY SDATE,
  4444                                                        P C_job_stat us => 'ERR OR EXCEPTI ON',
  4445                                                        P C_job_log_ message =>  'Total Ro ws Added/R ows Proces sed: '||VN _total_cou nt||'/'||V N_rowcnt_f etched||'  Elap(min):  '||VN_ela psed_time,
  4446                                                        P C_text1 =>  SUBSTR(VC _error_msg ,1,200),
  4447                                                        P D_date1 =>  SYSDATE
  4448                                 );
  4449  
  4450          DBM S_OUTPUT.P UT_LINE(VC _error_msg );
  4451  
  4452  
  4453   END LOAD_M ISSING_RES IDENT_ADDR _SP;
  4454   /
  4455  
  4456  
  4457   CREATE OR  REPLACE PU BLIC SYNON YM LOAD_MI SSING_RESI DENT_ADDR_ SP FOR ADR .LOAD_MISS ING_RESIDE NT_ADDR_SP ;
  4458   DROP PROCE DURE ADR.P ERSON_CHG_ LOG_CLEANU P_SP;
  4459  
  4460   CREATE OR  REPLACE PR OCEDURE AD R.Person_C hg_Log_Cle anup_Sp
  4461     (PB_run_ standalone
  4462        IN      BOOLEAN  DEFAULT FA LSE,
  4463      PB_allo w_rpt_inst
  4464        IN      BOOLEAN  DEFAULT FA LSE,
  4465      PN_rows _to_proces s
  4466        IN      NUMBER D EFAULT NUL L
  4467     )
  4468   IS
  4469  
  4470   -- ******* ********** ********** ********** ********** ********** ********** ********
  4471   -- * Proce dure: ADR. Person_Chg _Log_Clean up_Sp
  4472   -- *
  4473   -- *   Upd ate the AD R.Person_C hange_Log  table to r emove rows  where the
  4474   -- *   sub mission da te is olde r than the  days defi ned in the
  4475   -- *   ADR MGT.Adr_Pa rameter ta ble. Initi ally this  was set to  31 days.
  4476   -- *
  4477   -- * Param eters:
  4478   -- *
  4479   -- *  PB_r un_standal one   Igno re DBMS_JO B logic fo r checking  running j obs.
  4480   -- *                         Def ault: FALS E
  4481   -- *
  4482   -- *  PB_a llow_rpt_i nst   Allo w stored p rocedure t o be submi tted in th e
  4483   -- *                        DBMS _JOB queue  on the AD R reportin g database s
  4484   -- *                         Def ault: FALS E
  4485   -- *
  4486   -- ******* ********** ********** ********** ********** ********** ********** ********
  4487   --
  4488   -- ======= ========== ========== ========== ========== ========== ========== ========
  4489   -- Date         Autho r             Descrip tion
  4490   -- ======= ========== ========== ========== ========== ========== ========== ========
  4491   -- 06/23/2 010  Craig  Wood         Created  for CCR 1 175.
  4492   -- 10/13/2 014  Craig  Wood         CCR 215 2 - Fix ex ception ha ndler rout ine in
  4493   --                                              main p rocessing  loop to cl ose the
  4494   --                                              cursor  and write  to error  table
  4495   --                                              instea d of log t able. Also , exit
  4496   --                                              job if  too many  errors occ ur.
  4497   -- ======= ========== ========== ========== ========== ========== ========== ========
  4498  
  4499   -- CONSTAN TS
  4500  
  4501     CC_no                                   V ARCHAR2(1)  := 'N';
  4502     CC_parm_ applicatio n_name     CONSTANT V ARCHAR2(80 ) := 'PERS ON_CHG_LOG _CLEANUP_S P';
  4503     CC_parm_ log_file_a ge         CONSTANT V ARCHAR2(50 ) := 'OLDE ST LOG FIL E DAYS KEP T';
  4504     CC_parm_ rows_to_pr ocess      CONSTANT V ARCHAR2(50 ) := 'ROWS  TO PROCES S';
  4505     CC_parm_ submitted_ age        CONSTANT V ARCHAR2(50 ) := 'OLDE ST SUBMITT ED DATE KE PT';
  4506     CC_proce ss_name               CONSTANT V ARCHAR2(60 ) := 'Pers on_Change_ Log Cleanu p';
  4507     CC_sp_na me                    CONSTANT V ARCHAR2(35 ) := 'Pers on_Chg_Log _Cleanup_S p';
  4508     CC_yes                         CONSTANT V ARCHAR2(1)  := 'Y';
  4509  
  4510     CN_max_e rror_count            CONSTANT N UMBER := 5 00; -- CCR  2152
  4511  
  4512   -- VARIABL ES
  4513  
  4514     VB_allow _rpt_inst                      B OOLEAN :=  FALSE;
  4515     VB_run_s tandalone                      B OOLEAN :=  FALSE;
  4516  
  4517     VC_allow _rpt_inst                      V ARCHAR2(5)  := NULL;
  4518     VC_insta nce_name                       V ARCHAR2(16 );
  4519     VC_proce ss_duratio n                   V ARCHAR2(25 );
  4520     VC_run_s tandalone                      V ARCHAR2(5)  := NULL;
  4521     VC_sql_s tatement                       V ARCHAR2(20 00);
  4522  
  4523     VD_log_d ate                            D ATE;
  4524     VD_proce ss_end_dat e                   D ATE;
  4525     VD_proce ss_start_d ate                 D ATE;
  4526     VD_rec_g roup_date                      D ATE;
  4527  
  4528     VN_error _count                         N UMBER := 0 ; -- CCR 2 152
  4529     VN_job_c ount                           N UMBER := 0 ;
  4530     VN_job_n umber                          N UMBER;
  4531     VN_parm_ log_file_a ge                  N UMBER;
  4532     VN_parm_ rows_to_pr ocess               N UMBER;
  4533     VN_parm_ submitted_ age                 N UMBER;
  4534     VN_pass_ count                          N UMBER := 0 ;
  4535     VN_rec_c ount                           N UMBER := 0 ;
  4536     VN_updat e_count                        N UMBER := 0 ;
  4537  
  4538   -- CURSORS
  4539  
  4540     CURSOR C _prsn_chg_ rec IS
  4541       SELECT     Person _change_lo g_id
  4542       FROM       ADR.Pe rson_Chang e_Log
  4543       WHERE      Submit ted_date <  SYSDATE -  VN_parm_s ubmitted_a ge
  4544       AND        ROWNUM  <= VN_par m_rows_to_ process;
  4545  
  4546   -- TYPES
  4547  
  4548     TYPE TT_ prsn_chg_i d IS
  4549       TABLE  OF ADR.Per son_Change _Log.Perso n_change_l og_id%TYPE ;
  4550  
  4551   -- MEMORY  TABLES
  4552  
  4553     T_prsn_c hg_id                          T T_prsn_chg _id;
  4554  
  4555   -- ******* ********** ********** ********** ********** ********** ********** *******
  4556   -- *
  4557   -- *  MAIN  PROCEDURE :
  4558   -- *
  4559   -- ******* ********** ********** ********** ********** ********** ********** *******
  4560  
  4561   BEGIN
  4562  
  4563     VC_sql_s tatement:= 'ALTER SES SION SET D B_FILE_MUL TIBLOCK_RE AD_COUNT =  128';
  4564     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  4565  
  4566     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_D YNAMIC_SAM PLING = 6' ;
  4567     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  4568  
  4569     VC_sql_s tatement:= 'ALTER SES SION SET O PTIMIZER_M ODE = ALL_ ROWS';
  4570     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  4571  
  4572     VC_sql_s tatement:= 'ALTER SES SION SET S ORT_AREA_S IZE = 8192 000';
  4573     EXECUTE  IMMEDIATE  VC_sql_sta tement;
  4574  
  4575     VD_rec_g roup_date  := TRUNC(S YSDATE);
  4576  
  4577     VD_log_d ate := SYS DATE;
  4578     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4579                                 PD _job_log_d ate => VD_ log_date,
  4580                                 PC _job_statu s => SUBST R('Process  Initiatio n',1,60),
  4581                                 PD _date1 =>  VD_rec_gro up_date,
  4582                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4583  
  4584   -- ******* ********** ********** ********** ********** ********** ********** ********
  4585   -- *
  4586   -- * Valid ate input  parameters
  4587   -- *
  4588   -- ******* ********** ********** ********** ********** ********** ********** ********
  4589  
  4590   -- * Check  run stand alone flag
  4591  
  4592     IF PB_ru n_standalo ne IS NULL
  4593      OR NOT  PB_run_sta ndalone TH EN
  4594  
  4595       VB_run _standalon e := FALSE ;
  4596       VC_run _standalon e := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4597  
  4598     ELSE
  4599  
  4600       VB_run _standalon e := TRUE;
  4601       VC_run _standalon e := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4602  
  4603     END IF;
  4604  
  4605   -- * Check  run on re port insta nce flag
  4606  
  4607     IF PB_al low_rpt_in st IS NULL
  4608      OR NOT  PB_allow_r pt_inst TH EN
  4609  
  4610       VB_all ow_rpt_ins t := FALSE ;
  4611       VC_all ow_rpt_ins t := 'FALS E'; -- use d for log  message, b oolean can 't be disp layed
  4612  
  4613     ELSE
  4614  
  4615       VB_all ow_rpt_ins t := TRUE;
  4616       VC_all ow_rpt_ins t := 'TRUE '; -- used  for log m essage, bo olean can' t be displ ayed
  4617  
  4618     END IF;
  4619  
  4620   -- ******* ********** ********** ********** ********** ********** ********** ********
  4621   -- *
  4622   -- * Retri eve proces sing param eters
  4623   -- *
  4624   -- ******* ********** ********** ********** ********** ********** ********** ********
  4625  
  4626   -- ******* ********** ********** ********** ********** ********** ********** ********
  4627   -- * Proce ss Paramet er for OLD EST LOG FI LE DAYS KE PT
  4628   -- ******* ********** ********** ********** ********** ********** ********** ********
  4629  
  4630     BEGIN
  4631  
  4632       SELECT     Value
  4633       INTO       VN_par m_log_file _age
  4634       FROM       ADRMGT .Adr_Param eter
  4635       WHERE      Applic ation_name  = CC_parm _applicati on_name
  4636       AND        Parame ter_name =  CC_parm_l og_file_ag e;
  4637  
  4638       IF VN_ parm_log_f ile_age IS  NULL THEN
  4639  
  4640         VD_l og_date :=  SYSDATE;
  4641         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4642                                      PD_job_l og_date =>  VD_log_da te,
  4643                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4644                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  4645                                                                      || CC_par m_log_file _age
  4646                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  4647                                      PD_date1  => VD_rec _group_dat e,
  4648                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4649  
  4650         RETU RN;
  4651  
  4652       END IF ;
  4653  
  4654     EXCEPTIO N
  4655  
  4656       WHEN N O_DATA_FOU ND THEN
  4657  
  4658         VD_l og_date :=  SYSDATE;
  4659         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4660                                      PD_job_l og_date =>  VD_log_da te,
  4661                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4662                                      PC_job_l og_message  => 'Param eter for '
  4663                                                              || CC_ parm_log_f ile_age
  4664                                                              || ' w as not fou nd. Termin ating proc ess.',
  4665                                      PD_date1  => VD_rec _group_dat e,
  4666                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4667  
  4668         RETU RN;
  4669  
  4670       WHEN O THERS THEN
  4671  
  4672         VD_l og_date :=  SYSDATE;
  4673         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4674                                      PD_job_l og_date =>  VD_log_da te,
  4675                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4676                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  4677                                                                      || CC_par m_log_file _age
  4678                                                                      || '. Ter minating p rocess. '
  4679                                                                      || SQLERR M,1,2000),
  4680                                      PD_date1  => VD_rec _group_dat e,
  4681                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4682  
  4683         RETU RN;
  4684  
  4685     END;
  4686  
  4687   -- ******* ********** ********** ********** ********** ********** ********** ********
  4688   -- * Proce ss Paramet er for OLD EST SUBMIT TED DATE K EPT
  4689   -- ******* ********** ********** ********** ********** ********** ********** ********
  4690  
  4691     BEGIN
  4692  
  4693       SELECT     Value
  4694       INTO       VN_par m_submitte d_age
  4695       FROM       ADRMGT .Adr_Param eter
  4696       WHERE      Applic ation_name  = CC_parm _applicati on_name
  4697       AND        Parame ter_name =  CC_parm_s ubmitted_a ge;
  4698  
  4699       IF VN_ parm_submi tted_age I S NULL THE N
  4700  
  4701         VD_l og_date :=  SYSDATE;
  4702         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4703                                      PD_job_l og_date =>  VD_log_da te,
  4704                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4705                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  4706                                                                      || CC_par m_submitte d_age
  4707                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  4708                                      PD_date1  => VD_rec _group_dat e,
  4709                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4710  
  4711         RETU RN;
  4712  
  4713       END IF ;
  4714  
  4715     EXCEPTIO N
  4716  
  4717       WHEN N O_DATA_FOU ND THEN
  4718  
  4719         VD_l og_date :=  SYSDATE;
  4720         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4721                                      PD_job_l og_date =>  VD_log_da te,
  4722                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4723                                      PC_job_l og_message  => 'Param eter for '
  4724                                                              || CC_ parm_submi tted_age
  4725                                                              || ' w as not fou nd. Termin ating proc ess.',
  4726                                      PD_date1  => VD_rec _group_dat e,
  4727                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4728  
  4729         RETU RN;
  4730  
  4731       WHEN O THERS THEN
  4732  
  4733         VD_l og_date :=  SYSDATE;
  4734         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4735                                      PD_job_l og_date =>  VD_log_da te,
  4736                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4737                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  4738                                                                      || CC_par m_submitte d_age
  4739                                                                      || '. Ter minating p rocess. '
  4740                                                                      || SQLERR M,1,2000),
  4741                                      PD_date1  => VD_rec _group_dat e,
  4742                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4743  
  4744         RETU RN;
  4745  
  4746     END;
  4747  
  4748   -- ******* ********** ********** ********** ********** ********** ********** ********
  4749   -- * Proce ss Paramet er ROWS TO  PROCESS
  4750   -- ******* ********** ********** ********** ********** ********** ********** ********
  4751  
  4752     BEGIN
  4753  
  4754       SELECT     Value
  4755       INTO       VN_par m_rows_to_ process
  4756       FROM       ADRMGT .Adr_Param eter
  4757       WHERE      Applic ation_name  = CC_parm _applicati on_name
  4758       AND        Parame ter_name =  CC_parm_r ows_to_pro cess;
  4759  
  4760       IF VN_ parm_rows_ to_process  IS NULL T HEN
  4761  
  4762         VD_l og_date :=  SYSDATE;
  4763         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4764                                      PD_job_l og_date =>  VD_log_da te,
  4765                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4766                                      PC_job_l og_message  => SUBSTR ('Paramete r '
  4767                                                                      || CC_par m_rows_to_ process
  4768                                                                      || 'is NU LL. Termin ating proc ess.',1,20 00),
  4769                                      PD_date1  => VD_rec _group_dat e,
  4770                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4771  
  4772         RETU RN;
  4773  
  4774       END IF ;
  4775  
  4776     EXCEPTIO N
  4777  
  4778       WHEN N O_DATA_FOU ND THEN
  4779  
  4780         VD_l og_date :=  SYSDATE;
  4781         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4782                                      PD_job_l og_date =>  VD_log_da te,
  4783                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4784                                      PC_job_l og_message  => 'Param eter for '
  4785                                                              || CC_ parm_rows_ to_process
  4786                                                              || ' w as not fou nd. Termin ating proc ess.',
  4787                                      PD_date1  => VD_rec _group_dat e,
  4788                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4789  
  4790         RETU RN;
  4791  
  4792       WHEN O THERS THEN
  4793  
  4794         VD_l og_date :=  SYSDATE;
  4795         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4796                                      PD_job_l og_date =>  VD_log_da te,
  4797                                      PC_job_s tatus => S UBSTR('ERR OR - Job p arameter', 1,60),
  4798                                      PC_job_l og_message  => SUBSTR ('Unknown  error retr ieving par ameter for  '
  4799                                                                      || CC_par m_rows_to_ process
  4800                                                                      || '. Ter minating p rocess. '
  4801                                                                      || SQLERR M,1,2000),
  4802                                      PD_date1  => VD_rec _group_dat e,
  4803                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4804  
  4805         RETU RN;
  4806  
  4807     END;
  4808  
  4809   -- ******* ********** ********** ********** ********** ********** ********** ********
  4810   -- *
  4811   -- * Write  out Param eter log m essages fo r submitte d job
  4812   -- *
  4813   -- ******* ********** ********** ********** ********** ********** ********** ********
  4814  
  4815   -- ******* ********** ********** ********** ********** ********** ********** ********
  4816   -- *  Job  Submission  Parameter s
  4817   -- ******* ********** ********** ********** ********** ********** ********** ********
  4818  
  4819     VD_log_d ate := SYS DATE;
  4820     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4821                                 PD _job_log_d ate => VD_ log_date,
  4822                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  4823                                 PC _job_log_m essage =>  SUBSTR(' R un standal one: ' ||  VC_run_sta ndalone,1, 2000),
  4824                                 PD _date1 =>  VD_rec_gro up_date,
  4825                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4826  
  4827     VD_log_d ate := SYS DATE;
  4828     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4829                                 PD _job_log_d ate => VD_ log_date,
  4830                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  4831                                 PC _job_log_m essage =>  SUBSTR(' R un on repo rting data bases: ' | | VC_allow _rpt_inst, 1,2000),
  4832                                 PD _date1 =>  VD_rec_gro up_date,
  4833                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4834  
  4835     VD_log_d ate := SYS DATE;
  4836     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4837                                 PD _job_log_d ate => VD_ log_date,
  4838                                 PC _job_statu s => SUBST R('INFORMA TION - Job  submissio n paramete rs',1,60),
  4839                                 PC _job_log_m essage =>  SUBSTR(' R ows to pro cess each  loop: ' ||  NVL(TO_CH AR(PN_rows _to_proces s),'NULL') ,1,2000),
  4840                                 PD _date1 =>  VD_rec_gro up_date,
  4841                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4842  
  4843   -- ******* ********** ********** ********** ********** ********** ********** ********
  4844   -- *  Job  Table Para meters
  4845   -- ******* ********** ********** ********** ********** ********** ********** ********
  4846  
  4847     VD_log_d ate := SYS DATE;
  4848     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4849                                 PD _job_log_d ate => VD_ log_date,
  4850                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  4851                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_log_file _age || ':  ' || VN_p arm_log_fi le_age,1,2 000),
  4852                                 PD _date1 =>  VD_rec_gro up_date,
  4853                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4854  
  4855     VD_log_d ate := SYS DATE;
  4856     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4857                                 PD _job_log_d ate => VD_ log_date,
  4858                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  4859                                 PC _job_log_m essage =>  SUBSTR(' '  || CC_par m_submitte d_age || ' : ' || VN_ parm_submi tted_age,1 ,2000),
  4860                                 PD _date1 =>  VD_rec_gro up_date,
  4861                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4862  
  4863     VD_log_d ate := SYS DATE;
  4864     ADRMGT.J ob_Process _Log_Sp(PC _job_name  => SUBSTR( CC_process _name,1,60 ),
  4865                                 PD _job_log_d ate => VD_ log_date,
  4866                                 PC _job_statu s => SUBST R('INFORMA TION - Job  table par ameters',1 ,60),
  4867                                 PC _job_log_m essage =>  SUBSTR(' '
  4868                                                                 ||  CC_parm_ro ws_to_proc ess
  4869                                                                 ||  ' (in each  loop): '
  4870                                                                 ||  TO_CHAR(VN _parm_rows _to_proces s),1,2000) ,
  4871                                 PD _date1 =>  VD_rec_gro up_date,
  4872                                 PC _text1 =>  SUBSTR('Da te1 column  contains  the daily  process st art date', 1,255));
  4873  
  4874   -- If ROWS  TO PROCES S paramete r is overr idden, wri te out a l og message
  4875  
  4876     IF PN_ro ws_to_proc ess IS NOT  NULL THEN
  4877  
  4878       VN_par m_rows_to_ process :=  PN_rows_t o_process;
  4879  
  4880       VD_log _date := S YSDATE;
  4881       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  4882                                    PD_job_log _date => V D_log_date ,
  4883                                    PC_job_sta tus => SUB STR('WARNI NG - Job t able param eters',1,6 0),
  4884                                    PC_job_log _message = > SUBSTR('  Processin g paramete r '
  4885                                                                   | | CC_parm_ rows_to_pr ocess
  4886                                                                   | | ' (in ea ch loop) h as been ov erridden.'
  4887                                                                   | | ' The ov erride val ue is: '
  4888                                                                   | | TO_CHAR( VN_parm_ro ws_to_proc ess),1,200 0),
  4889                                    PD_date1 = > VD_rec_g roup_date,
  4890                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  4891  
  4892     END IF;
  4893  
  4894   -- ******* ********** ********** ********** ********** ********** ********** ********
  4895   -- *
  4896   -- * Check  to see if  process i s running  on a repor ting datab ase.
  4897   -- *  - If  VB_allow_ rpt_inst i s FALSE, t hen it's n ot allowed . End the  job.
  4898   -- *
  4899   -- ******* ********** ********** ********** ********** ********** ********** ********
  4900  
  4901     IF NOT V B_allow_rp t_inst THE N
  4902  
  4903       BEGIN
  4904  
  4905         VD_l og_date :=  SYSDATE;
  4906         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4907                                      PD_job_l og_date =>  VD_log_da te,
  4908                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if running  on a repo rting data base',1,60 ),
  4909                                      PD_date1  => VD_rec _group_dat e,
  4910                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4911  
  4912         SELE CT    Inst ance_name
  4913         INTO       VC_i nstance_na me
  4914         FROM       V$in stance;
  4915  
  4916         IF U PPER(SUBST R(VC_insta nce_name,1 ,4)) = 'AD RR' THEN
  4917  
  4918           VD _log_date  := SYSDATE ;
  4919           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4920                                        PD_job _log_date  => VD_log_ date,
  4921                                        PC_job _status =>  SUBSTR('E RROR - Pro cessing Fa iled',1,60 ),
  4922                                        PC_job _log_messa ge => SUBS TR('Attemp ting to ru n on a rep orting ins tance. Ins tance name : '
  4923                                                                     || VC_inst ance_name
  4924                                                                     || '. This  job has b een termin ated. To r un on a re porting in stance,'
  4925                                                                     || ' set p arameter V B_allow_rp t_inst to  TRUE and r esubmit th e job.',1, 2000),
  4926                                        PD_dat e1 => VD_r ec_group_d ate,
  4927                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4928  
  4929           RE TURN;
  4930  
  4931         END  IF;
  4932  
  4933       EXCEPT ION
  4934  
  4935         WHEN  OTHERS TH EN
  4936  
  4937           VD _log_date  := SYSDATE ;
  4938           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4939                                        PD_job _log_date  => VD_log_ date,
  4940                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ret rieve inst ance name' ,1,60),
  4941                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  4942                                        PD_dat e1 => VD_r ec_group_d ate,
  4943                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4944  
  4945           RE TURN;
  4946  
  4947       END;
  4948  
  4949     END IF;
  4950  
  4951   -- ******* ********** ********** ********** ********** ********** ********** ********
  4952   -- *
  4953   -- * Check  to see if  the job h as already  run today
  4954   -- *  - If  running i n stand-al one mode,  don't chec k.
  4955   -- *  - Ot herwise, i f job has  already ru n today, t hen exit t he job.
  4956   -- *
  4957   -- ******* ********** ********** ********** ********** ********** ********** ********
  4958  
  4959     IF NOT P B_run_stan dalone THE N
  4960  
  4961       BEGIN
  4962  
  4963         VD_l og_date :=  SYSDATE;
  4964         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  4965                                      PD_job_l og_date =>  VD_log_da te,
  4966                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Checking  if process  has alrea dy ran tod ay',1,60),
  4967                                      PD_date1  => VD_rec _group_dat e,
  4968                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  4969  
  4970         SELE CT    COUN T(*)
  4971         INTO       VN_r ec_count
  4972         FROM       ADRM GT.Job_Pro cess_Logs
  4973         WHER E     Job_ name = CC_ process_na me
  4974         AND        Date 1 = VD_rec _group_dat e
  4975         AND        Job_ status LIK E 'SUCCESS %-%Process ing Comple ted';
  4976  
  4977         IF V N_rec_coun t > 0 THEN
  4978  
  4979           VD _log_date  := SYSDATE ;
  4980           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4981                                        PD_job _log_date  => VD_log_ date,
  4982                                        PC_job _status =>  SUBSTR('W ARNING - T his date h as already  been proc essed',1,6 0),
  4983                                        PC_job _log_messa ge => SUBS TR('Proces sing has a lready com pleted for  this date . Exiting  to job que ue.',1,200 0),
  4984                                        PD_dat e1 => VD_r ec_group_d ate,
  4985                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  4986  
  4987           RE TURN;
  4988  
  4989         END  IF;
  4990  
  4991       EXCEPT ION
  4992  
  4993         WHEN  OTHERS TH EN
  4994  
  4995           VD _log_date  := SYSDATE ;
  4996           AD RMGT.Job_P rocess_Log _Sp(PC_job _name => S UBSTR(CC_p rocess_nam e,1,60),
  4997                                        PD_job _log_date  => VD_log_ date,
  4998                                        PC_job _status =>  SUBSTR('E RROR - Una ble to ver ify if job  has alrea dy run',1, 60),
  4999                                        PC_job _log_messa ge => SUBS TR('Termin ating proc ess. ' ||  SQLERRM,1, 2000),
  5000                                        PD_dat e1 => VD_r ec_group_d ate,
  5001                                        PC_tex t1 => SUBS TR('Date1  column con tains the  daily proc ess start  date',1,25 5));
  5002  
  5003           RE TURN;
  5004  
  5005       END;
  5006  
  5007     END IF;
  5008  
  5009   -- ******* ********** ********** ********** ********** ********** ********** ********
  5010   -- *
  5011   -- * Check  to see if  any other  jobs of t his proced ure are ru nning.
  5012   -- *  - If  yes, then  end this  job.
  5013   -- *
  5014   -- ******* ********** ********** ********** ********** ********** ********** ********
  5015  
  5016     SELECT C OUNT(*)
  5017     INTO   V N_job_coun t
  5018     FROM   S YS.DBA_JOB S_RUNNING  R,
  5019            S YS.DBA_JOB S J
  5020     WHERE  J .JOB = R.J OB
  5021     AND    U PPER(J.WHA T) LIKE '% ' || UPPER (CC_sp_nam e) || '%';
  5022  
  5023     IF VN_jo b_count >  1 THEN
  5024  
  5025       VD_log _date := S YSDATE;
  5026       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5027                                    PD_job_log _date => V D_log_date ,
  5028                                    PC_job_sta tus => SUB STR('WARNI NG - Check  for runni ng jobs',1 ,60),
  5029                                    PC_job_log _message = > SUBSTR(' There is a nother '
  5030                                                                || C C_sp_name
  5031                                                                || '  job runni ng.'
  5032                                                                || '  Exiting j ob without  running.' ,1,2000),
  5033                                    PD_date1 = > VD_rec_g roup_date,
  5034                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5035  
  5036       RETURN ;
  5037  
  5038     ELSE
  5039  
  5040       IF VB_ run_standa lone THEN
  5041  
  5042         VD_l og_date :=  SYSDATE;
  5043         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5044                                      PD_job_l og_date =>  VD_log_da te,
  5045                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in STANDAL ONE mode', 1,60),
  5046                                      PD_date1  => VD_rec _group_dat e,
  5047                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5048  
  5049       ELSE
  5050  
  5051         SELE CT    MAX( J.Job)
  5052         INTO       VN_j ob_number
  5053         FROM       SYS. DBA_JOBS_R UNNING R,
  5054                    SYS. DBA_JOBS J
  5055         WHER E     J.JO B = R.JOB
  5056         AND        UPPE R(J.WHAT)  LIKE '%' | | UPPER(CC _sp_name)  || '%';
  5057  
  5058         VD_l og_date :=  SYSDATE;
  5059         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5060                                      PD_job_l og_date =>  VD_log_da te,
  5061                                      PC_job_s tatus => S UBSTR('INF ORMATION -  Starting  in DBMS_JO B mode',1, 60),
  5062                                      PC_job_l og_message  => SUBSTR ('DBMS_JOB  Number: '
  5063                                                                      || VN_job _number,1, 2000),
  5064                                      PD_date1  => VD_rec _group_dat e,
  5065                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5066  
  5067       END IF ;
  5068  
  5069     END IF;
  5070  
  5071   -- ******* ********** ********** ********** ********** ********** ********** ********
  5072   -- *
  5073   -- * Main  processing  loop
  5074   -- *
  5075   -- ******* ********** ********** ********** ********** ********** ********** ********
  5076  
  5077     VN_pass_ count := 0 ;
  5078     VN_updat e_count :=  0;
  5079     VD_proce ss_start_d ate := SYS DATE;
  5080  
  5081   -- ******* ********** ********** ********** ********** ********** ********** ********
  5082   -- * Remov e old proc ess log ro ws
  5083   -- ******* ********** ********** ********** ********** ********** ********** ********
  5084     BEGIN
  5085  
  5086       VD_log _date := S YSDATE;
  5087       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5088                                    PD_job_log _date => V D_log_date ,
  5089                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  logs',1,60 ),
  5090                                    PC_job_log _message = > SUBSTR(' Removing p rocess log s over '
  5091                                                                   | | VN_parm_ log_file_a ge
  5092                                                                   | | ' days o ld',1,2000 ),
  5093                                    PD_date1 = > VD_rec_g roup_date,
  5094                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5095  
  5096       DELETE
  5097       FROM       ADRMGT .Job_Proce ss_Logs
  5098       WHERE      Job_na me = CC_pr ocess_name
  5099       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  5100  
  5101       COMMIT ;
  5102  
  5103       VD_log _date := S YSDATE;
  5104       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5105                                    PD_job_log _date => V D_log_date ,
  5106                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process l ogs',1,60) ,
  5107                                    PC_job_log _message = > SUBSTR(' Removed pr ocess logs  over '
  5108                                                                   | | VN_parm_ log_file_a ge
  5109                                                                   | | ' days o ld',1,2000 ),
  5110                                    PD_date1 = > VD_rec_g roup_date,
  5111                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5112  
  5113  
  5114     EXCEPTIO N
  5115  
  5116       WHEN N O_DATA_FOU ND THEN
  5117  
  5118         NULL ;
  5119  
  5120       WHEN O THERS THEN
  5121  
  5122         VD_l og_date :=  SYSDATE;
  5123         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5124                                      PD_job_l og_date  = > VD_log_d ate,
  5125                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  logs.',1,6 0),
  5126                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5127                                      PD_date1  => VD_rec _group_dat e,
  5128                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5129  
  5130     END;
  5131  
  5132   -- ******* ********** ********** ********** ********** ********** ********** ********
  5133   -- * Remov e old proc ess error  rows
  5134   -- ******* ********** ********** ********** ********** ********** ********** ********
  5135  
  5136     BEGIN
  5137  
  5138       VD_log _date := S YSDATE;
  5139       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5140                                    PD_job_log _date => V D_log_date ,
  5141                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoving ol d process  errors',1, 60),
  5142                                    PC_job_log _message = > SUBSTR(' Removing p rocess err ors over '
  5143                                                                   | | VN_parm_ log_file_a ge
  5144                                                                   | | ' days o ld',1,2000 ),
  5145                                    PD_date1 = > VD_rec_g roup_date,
  5146                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5147  
  5148       DELETE
  5149       FROM       ADRMGT .Job_Proce ss_Errs
  5150       WHERE      Job_na me = CC_pr ocess_name
  5151       AND        Date1  < TRUNC(SY SDATE) - V N_parm_log _file_age;
  5152  
  5153       COMMIT ;
  5154  
  5155       VD_log _date := S YSDATE;
  5156       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5157                                    PD_job_log _date => V D_log_date ,
  5158                                    PC_job_sta tus => SUB STR('INFOR MATION - R emoved old  process e rrors',1,6 0),
  5159                                    PC_job_log _message = > SUBSTR(' Removed pr ocess erro rs over '
  5160                                                                   | | VN_parm_ log_file_a ge
  5161                                                                   | | ' days o ld',1,2000 ),
  5162                                    PD_date1 = > VD_rec_g roup_date,
  5163                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5164  
  5165     EXCEPTIO N
  5166  
  5167       WHEN N O_DATA_FOU ND THEN
  5168  
  5169         NULL ;
  5170  
  5171       WHEN O THERS THEN
  5172  
  5173         VD_l og_date :=  SYSDATE;
  5174         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5175                                      PD_job_l og_date  = > VD_log_d ate,
  5176                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error r emoving ol d process  errors.',1 ,60),
  5177                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5178                                      PD_date1  => VD_rec _group_dat e,
  5179                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5180  
  5181     END;
  5182  
  5183   -- ******* ********** ********** ********** ********** ********** ********** ********
  5184   -- * Main  record cur sor logic
  5185   -- ******* ********** ********** ********** ********** ********** ********** ********
  5186  
  5187     VN_pass_ count := 0 ;
  5188     VN_updat e_count :=  0;
  5189  
  5190     LOOP
  5191  
  5192       BEGIN
  5193  
  5194         OPEN  C_prsn_ch g_rec;
  5195  
  5196         FETC H C_prsn_c hg_rec
  5197         BULK  COLLECT I NTO T_prsn _chg_id
  5198         LIMI T VN_parm_ rows_to_pr ocess;
  5199  
  5200         EXIT  WHEN T_pr sn_chg_id. COUNT = 0;
  5201  
  5202         FORA LL I_prsn_ chg_id IN  T_prsn_chg _id.FIRST. .T_prsn_ch g_id.last
  5203           DE LETE
  5204           FR OM      AD R.Person_C hange_Log
  5205           WH ERE     Pe rson_chang e_log_id =  T_prsn_ch g_id(I_prs n_chg_id);
  5206  
  5207         COMM IT;
  5208  
  5209         VN_p ass_count  := VN_pass _count + 1 ;
  5210  
  5211         VN_u pdate_coun t := VN_up date_count  + T_prsn_ chg_id.COU NT;
  5212  
  5213         CLOS E C_prsn_c hg_rec;
  5214  
  5215       EXCEPT ION
  5216  
  5217         WHEN  OTHERS TH EN
  5218  
  5219           VN _error_cou nt := VN_e rror_count  + 1;  --  CCR 2152
  5220  
  5221           IF  VN_error_ count >= C N_max_erro r_count TH EN  -- CCR  2152
  5222  
  5223              RETURN;  - - CCR 2152
  5224  
  5225           EL SE  -- CCR  2152
  5226  
  5227              IF C_prsn_ chg_rec%IS OPEN THEN   -- CCR 21 52
  5228  
  5229                CLOSE C_ prsn_chg_r ec;  -- CC R 2152
  5230  
  5231              END IF;  - - CCR 2152
  5232  
  5233              VD_log_dat e := SYSDA TE;
  5234  
  5235              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(CC _process_n ame,1,60),
  5236                                          PD_j ob_error_d ate  => VD _log_date,
  5237                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  5238                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r removing  person ch ange logs  - '
  5239                                                                         || SQL ERRM,1,200 0),
  5240                                          PD_d ate1 => VD _rec_group _date,
  5241                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255));  --  CCR 2152
  5242  
  5243           EN D IF;  --  CCR 2152
  5244  
  5245       END;
  5246  
  5247     END LOOP ;
  5248  
  5249   -- ******* ********** ********** ********** ********** ********** ********** ********
  5250   -- * Proce ss complet ion inform ation
  5251   -- ******* ********** ********** ********** ********** ********** ********** ********
  5252  
  5253     BEGIN
  5254  
  5255       VD_log _date := S YSDATE;
  5256       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5257                                    PD_job_log _date => V D_log_date ,
  5258                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  5259                                    PD_date1 = > VD_rec_g roup_date,
  5260                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  5261                                    PN_numeric 2 => VN_pa ss_count,
  5262                                    PC_text2 = > SUBSTR(' Cursor Loo p Count',1 ,255));
  5263  
  5264       VD_log _date := S YSDATE;
  5265       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5266                                    PD_job_log _date => V D_log_date ,
  5267                                    PC_job_sta tus => SUB STR('INFOR MATION - P rocess Sta tistics',1 ,60),
  5268                                    PD_date1 = > VD_rec_g roup_date,
  5269                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255),
  5270                                    PN_numeric 2 => VN_up date_count ,
  5271                                    PC_text2 = > SUBSTR(' Deleted Re cords Coun t',1,255)) ;
  5272  
  5273       VD_pro cess_end_d ate := SYS DATE;
  5274       VC_pro cess_durat ion := LTR IM(TO_CHAR (TRUNC((VD _process_e nd_date -  VD_process _start_dat e)*24),'00 ')) || ' H rs '
  5275                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 )-
  5276                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24))) *  60),'00') ) || ' Min s '
  5277                                ||  LTRIM(TO_C HAR(TRUNC( (((VD_proc ess_end_da te - VD_pr ocess_star t_date)*24 *60)-
  5278                                    TRUNC(((VD _process_e nd_date -  VD_process _start_dat e)*24*60)) ) * 60),'0 0')) || '  Secs';
  5279  
  5280       VD_log _date := S YSDATE;
  5281       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5282                                    PD_job_log _date => V D_log_date ,
  5283                                    PC_job_sta tus => SUB STR('SUCCE SS - Proce ssing Comp leted',1,6 0),
  5284                                    PC_job_log _message = > SUBSTR(' Processing  Time: ' | | VC_proce ss_duratio n,1,2000),
  5285                                    PD_date1 = > VD_rec_g roup_date,
  5286                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5287  
  5288     EXCEPTIO N
  5289  
  5290       WHEN O THERS THEN
  5291  
  5292         VD_l og_date :=  SYSDATE;
  5293         ADRM GT.Job_Pro cess_Log_S p(PC_job_n ame => SUB STR(CC_pro cess_name, 1,60),
  5294                                      PD_job_l og_date  = > VD_log_d ate,
  5295                                      PC_job_s tatus => S UBSTR('ERR OR - Unkno wn error w riting com pletion in formation. ',1,60),
  5296                                      PC_job_l og_message  => SUBSTR (SQLERRM,1 ,2000),
  5297                                      PD_date1  => VD_rec _group_dat e,
  5298                                      PC_text1  => SUBSTR ('Date1 co lumn conta ins the da ily proces s start da te',1,255) );
  5299  
  5300         RETU RN;
  5301  
  5302     END;
  5303  
  5304   EXCEPTION
  5305  
  5306     WHEN OTH ERS THEN
  5307  
  5308       ROLLBA CK;
  5309  
  5310       VD_log _date := S YSDATE;
  5311       ADRMGT .Job_Proce ss_Err_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5312                                    PD_job_err or_date  = > VD_log_d ate,
  5313                                    PC_job_err or_code =>  SUBSTR(SQ LCODE,1,60 ),
  5314                                    PC_job_err or_message  => SUBSTR ('Unknown  processing  error in  procedure  Person_Chg _Log_Clean up_Sp.'
  5315                                                                  ||  SQLERRM,1 ,2000),
  5316                                    PD_date1 = > VD_rec_g roup_date,
  5317                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5318  
  5319       VD_log _date := S YSDATE;
  5320       ADRMGT .Job_Proce ss_Log_Sp( PC_job_nam e => SUBST R(CC_proce ss_name,1, 60),
  5321                                    PD_job_log _date => V D_log_date ,
  5322                                    PC_job_sta tus => SUB STR('ERROR  - Unknown  processin g error',1 ,60),
  5323                                    PC_job_log _message = > SUBSTR(' See error  log table  for detail s.',1,2000 ),
  5324                                    PD_date1 = > VD_rec_g roup_date,
  5325                                    PC_text1 = > SUBSTR(' Date1 colu mn contain s the dail y process  start date ',1,255));
  5326  
  5327   END Person _Chg_Log_C leanup_Sp;
  5328   /
  5329   DROP PROCE DURE ADR.R EBLD_ADR_C OM_MAIL_SE Q_SP;
  5330  
  5331   CREATE OR  REPLACE PR OCEDURE AD R.REBLD_AD R_COM_MAIL _SEQ_SP
  5332   IS
  5333   BEGIN
  5334     DECLARE
  5335  
  5336           sq l_stmt                  varchar2 (200);
  5337           er ror_code                varchar2 (25);
  5338           er ror_msg_te xt           varchar2 (200);
  5339           er ror_descr               varchar2 (200);
  5340  
  5341     BEGIN          -- P rocedure B ody Begin
  5342           sq l_stmt :=  'DROP SEQU ENCE COM_M AILING_BAR CODE_S';
  5343           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  5344           EX ECUTE IMME DIATE sql_ stmt;
  5345           sq l_stmt :=  'CREATE SE QUENCE COM _MAILING_B ARCODE_S';
  5346           sq l_stmt :=  sql_stmt | |' START W ITH 1 ';
  5347           sq l_stmt :=  sql_stmt | |' NOMAXVA LUE ';
  5348           sq l_stmt :=  sql_stmt | |' MINVALU E 1 ';
  5349           sq l_stmt :=  sql_stmt | |' NOCYCLE  ';
  5350           sq l_stmt :=  sql_stmt | |' CACHE 2 5 ';
  5351           sq l_stmt :=  sql_stmt | |' ORDER ' ;
  5352           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  5353           EX ECUTE IMME DIATE sql_ stmt;
  5354           sq l_stmt :=  'GRANT SEL ECT ON  CO M_MAILING_ BARCODE_S  TO ADR_SEQ _R';
  5355           DB MS_OUTPUT. PUT_LINE ( sql_stmt);
  5356           EX ECUTE IMME DIATE sql_ stmt;
  5357  
  5358  
  5359     EXCEPTIO N              -- Beg in Person  Trait Exce ption
  5360       WHEN N OT_LOGGED_ ON THEN
  5361           BE GIN
  5362              error_code              := SQLCO DE ;
  5363              error_msg_ text         := subst r(SQLERRM, 1,64);
  5364              error_desc r            := 'Not  logged in,  operation  has faile d: ';
  5365              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  5366              DBMS_OUTPU T.PUT_LINE  (error_co de);
  5367              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  5368           EN D;
  5369  
  5370       WHEN T IMEOUT_ON_ RESOURCE T HEN
  5371           BE GIN
  5372              error_code              := SQLCO DE ;
  5373              error_msg_ text         := subst r(SQLERRM, 1,64);
  5374              error_desc r            := 'Reso urce unava ilable, op eration ha s failed:  ';
  5375              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  5376              DBMS_OUTPU T.PUT_LINE  (error_co de);
  5377              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  5378           EN D;
  5379  
  5380       WHEN O THERS THEN
  5381           BE GIN
  5382              error_code              := SQLCO DE ;
  5383              error_msg_ text         := subst r(SQLERRM, 1,64);
  5384              error_desc r            := 'Erro r has occu rred, oper ation has  failed: ';
  5385              DBMS_OUTPU T.PUT_LINE  (error_de scr);
  5386              DBMS_OUTPU T.PUT_LINE  (error_co de);
  5387              DBMS_OUTPU T.PUT_LINE  (error_ms g_text);
  5388           EN D;
  5389  
  5390     END;           -- E nd Person  Trait PL/S QL Block
  5391  
  5392  
  5393   END REBLD_ ADR_COM_MA IL_SEQ_SP;
  5394   /
  5395   DROP PROCE DURE ADR.U PD_QRTZTRG _CLOCK_ST_ TIME_SP;
  5396  
  5397   CREATE OR  REPLACE PR OCEDURE AD R.UPD_QRTZ TRG_CLOCK_ ST_TIME_SP  (
  5398      p_in_nu m_days        IN         NUMBER,
  5399      p_in_nu m_hours       IN         NUMBER,
  5400      p_in_vp id            IN         VARCHAR 2,
  5401      p_in_tr igger_nm      IN         VARCHAR 2,
  5402      p_out_n um_updated    OUT NUM BER,
  5403      p_out_e rr_msg        OUT   V ARCHAR2)
  5404   IS
  5405  
  5406      -- **** ********** ********** ********** ********** ********** ********** ********** ********** *****
  5407      -- * Pr ocedure: U PD_QRTZTRG _CLOCK_ST_ TIME_SP
  5408      -- *
  5409      -- *
  5410      -- *  D escription : - This p rocedure w ill be use  to update  the start  time of a ny clock t rigger
  5411      -- *                              in QRT Z_TRIGGER  table to m ature the  clock. Thi s procedur e will inv oke by
  5412      -- *                             clockTr iggerBatch Process fo r non prod uciton DBs .
  5413      -- * Pa rameters:
  5414      -- *
  5415      -- *  p i_in_num_d ays           Day whe n trigger  is going t o expire.
  5416      -- *  p i_in_num_h ours         Hours wh en trigger  is going  to fire. I t counts h ours from  midnight.
  5417      -- *  p i_in_vpid                        VPID_VALUE  - for whi ch trigger  time will  change.
  5418      -- *  p i_in_Trigg er_nm          Name o f the trig ger.
  5419      -- *  p _out_num_u pdated   N umber of r ows update d
  5420      -- *  p _out_err_m sg              Error  message/I nfo messag e
  5421      -- *
  5422      -- Crea ted Date            C reated By
  5423      -- ==== ========== ========== ========== ========== ========== ========== ========== =
  5424      -- 04/2 5/2017                Mita Panda
  5425      --
  5426      --***** ********** ********** ********** ********** ********** ********** ********** ********** ***
  5427      --- loc al variabl es
  5428      v_vpid                        PERSON.VPI D_VALUE%TY PE;
  5429      v_start _time            NUMB ER;
  5430      v_perso n_id            NUMBE R;
  5431      v_trigg er_name      QRTZ_TRI GGERS.TRIG GER_NAME%T YPE;
  5432      v_new_s tart_time    NUMBER;
  5433      v_new_d ate             VARCH AR2 (60);
  5434      e_no_da ta_found     EXCEPTIO N;
  5435   BEGIN
  5436      BEGIN
  5437         SELE CT person_ id
  5438           IN TO v_perso n_id
  5439           FR OM person
  5440          WHE RE vpid_va lue = p_in _vpid;
  5441  
  5442      EXCEPTI ON
  5443         WHEN  NO_DATA_F OUND
  5444         THEN
  5445  
  5446            - -DBMS_OUTP UT.PUT_LIN E('This VP ID does no t exists i n Person t able' );
  5447            R AISE e_no_ data_found ;
  5448      END;
  5449  
  5450  
  5451      --- Set  the trigg er name
  5452  
  5453      v_trigg er_name :=  v_person_ id || p_in _trigger_n m;
  5454  
  5455      --Set t he trigger  start tim e
  5456      v_start _time :=
  5457           (   TRUNC (SY SDATE + p_ in_num_day s)
  5458            +  p_in_num_ hours / 24
  5459            -  TO_DATE ( '01011970' , 'DDMMYYY Y'))
  5460            *  60
  5461           *  60
  5462           *  24
  5463           *  1000;
  5464  
  5465      UPDATE  qrtz_trigg ers
  5466         SET  START_TIME  = v_start _time, NEX T_FIRE_TIM E = v_star t_time
  5467       WHERE  trigger_na me = v_tri gger_name;
  5468  
  5469      p_out_n um_updated  := SQL%RO WCOUNT;
  5470  
  5471  
  5472      SELECT  start_time ,
  5473              TO_CHAR (
  5474                   TO_DA TE ('1970- 01-01', 'y yyy-mm-dd  hh:mi:ss')
  5475                 + (star t_TIME / 8 6400000),
  5476                 'yyyy-m m-dd hh24: mi:ss am')
  5477        INTO  v_new_star t_time, v_ new_date
  5478        FROM  QRTZ_TRIGG ERS
  5479       WHERE  trigger_na me = v_tri gger_name;
  5480  
  5481      --DBMS_ OUTPUT.PUT _LINE(' TR IGGER NEW_ DATE_TIME: - '||v_new _date||',  NEW_START_ TIME:-'||v _new_start _time);
  5482  
  5483      p_out_e rr_msg :=
  5484            ' No errors,  For VPID: - '
  5485         || p _in_vpid
  5486         || ' , For Trig ger:-'
  5487         || v _trigger_n ame
  5488         || '  the NEW_D ATE_TIME:-  '
  5489         || v _new_date;
  5490      COMMIT;
  5491  
  5492   EXCEPTION
  5493  
  5494      WHEN e_ no_data_fo und
  5495      THEN
  5496         p_ou t_err_msg  := 'This V PID does n ot exists  in Person  table';
  5497         p_ou t_num_upda ted := 0;
  5498      WHEN NO _DATA_FOUN D
  5499  
  5500      THEN
  5501         ---D BMS_OUTPUT .PUT_LINE( 'No trigge r found fo r this VPI D '||v_vpi d||', Chec k may be t he trigger  already f ired.');
  5502         p_ou t_num_upda ted := 0;
  5503         p_ou t_err_msg  :=
  5504            ' No trigger  found for  this VPID  in QRTZ_T RIGGERS ta ble.';
  5505      WHEN OT HERS
  5506      THEN
  5507         --   DBMS_OUTPU T.PUT_LINE (sqlcode|| substr(sql errm,1,100 ));
  5508  
  5509         p_ou t_num_upda ted := 0;
  5510         p_ou t_err_msg  := SQLCODE  || SUBSTR  (SQLERRM,  1, 100);
  5511   END UPD_QR TZTRG_CLOC K_ST_TIME_ SP;
  5512   /
  5513  
  5514  
  5515   CREATE OR  REPLACE PU BLIC SYNON YM UPD_QRT ZTRG_CLOCK _ST_TIME_S P FOR ADR. UPD_QRTZTR G_CLOCK_ST _TIME_SP;
  5516  
  5517  
  5518   GRANT EXEC UTE ON ADR .UPD_QRTZT RG_CLOCK_S T_TIME_SP  TO EEUSR;
  5519   DROP PROCE DURE ADR.W KF_CASE_H_ DELETE_SP;
  5520  
  5521   CREATE OR  REPLACE PR OCEDURE AD R.WKF_CASE _H_DELETE_ SP
  5522   IS
  5523  
  5524  
  5525  
  5526     CURSOR c _wkf  IS S ELECT WKF_ CASE_H.wkf _case_id
  5527          fro m ADR.wkf_ case_H
  5528         wher e WKF_CASE _H.transac tion_type_ code = 'D'
  5529       AND WK F_CASE_H.W KF_CASE_TY PE_ID = 16 16295;
  5530  
  5531     sql_stmt  string(51 2);
  5532     v_cnt_wk f number(2 0);
  5533     VD_log_d ate                            D ATE;
  5534     VD_rec_g roup_date                      D ATE;
  5535     VC_proce ss_name                        V ARCHAR2(60 ) := 'ADR  WKF_CASE_H  DELETE';
  5536     VN_error _recs_coun t                   N UMBER := 0 ;
  5537      BEGIN
  5538           se lect  coun t(wkf_case _id)
  5539           in to v_cnt_w kf
  5540           fr om wkf_cas e_H
  5541           wh ere transa ction_type _code = 'D '
  5542           AN D WKF_CASE _TYPE_ID =  1616295;
  5543          if  v_cnt_wkf  > 0 THEN
  5544                FOR this _sql in  c _wkf  LOOP
  5545                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_ASSIG NMENT_H  W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  5546                    EXEC UTE IMMEDI ATE sql_st mt;
  5547                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_COMME NTS_H  WHE RE WKF_CAS E_ID = ' | |this_sql. WKF_CASE_I D;
  5548                    EXEC UTE IMMEDI ATE sql_st mt;
  5549                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_STATU S_DETAIL_H    WHERE W KF_CASE_ID  = ' ||thi s_sql.WKF_ CASE_ID;
  5550                    EXEC UTE IMMEDI ATE sql_st mt;
  5551                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ MESSAGING_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  5552                    EXEC UTE IMMEDI ATE sql_st mt;
  5553                    sql_ stmt :=  ' DELETE FRO M ADR.WKF_ CASE_H   W HERE WKF_C ASE_ID = '  ||this_sq l.WKF_CASE _ID;
  5554                    EXEC UTE IMMEDI ATE sql_st mt;
  5555                   commi t;
  5556              END LOOP;
  5557         END  IF;
  5558         EXCE PTION
  5559           WH EN NO_DATA _FOUND THE N
  5560                 NULL;
  5561           WH EN OTHERS  THEN
  5562              VN_error_r ecs_count  := VN_erro r_recs_cou nt + 1;
  5563              ROLLBACK;
  5564              VD_log_dat e := SYSDA TE;
  5565              ADRMGT.Job _Process_E rr_Sp(PC_j ob_name =>  SUBSTR(VC _process_n ame,1,60),
  5566                                          PD_j ob_error_d ate  => VD _log_date,
  5567                                          PC_j ob_error_c ode => SUB STR(SQLCOD E,1,60),
  5568                                          PC_j ob_error_m essage =>  SUBSTR('Un known erro r while de leting fro m ADR.Addr ess row.'
  5569                                                                         || SQL ERRM,1,200 0),
  5570                                          PD_d ate1 => VD _rec_group _date,
  5571                                          PC_t ext1 => SU BSTR('Date 1 column c ontains th e daily pr ocess star t date',1, 255)
  5572                                          );
  5573   END WKF_CA SE_H_DELET E_SP;
  5574   /