home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.oracle.server      Oracle Sysadmins question their careers      44,300 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 44,177 of 44,300   
   Yogesh Palrecha to All   
   Re: ETL code in Oracle   
   22 Feb 23 15:00:27   
   
   From: yogeshpalrecha@gmail.com   
      
   create table prc_run_config (   
   prc_run_config_id INTEGER,   
   prc_name VARCHAR2(100),   
   prc_start_range INTEGER,   
   prc_end_range INTEGER,   
   prc_created_time TIMESTAMP   
   );   
      
   create table prc_run_log_summary (   
   prc_run_log_id INTEGER,   
   prc_run_config_id INTEGER,   
   prc_start_time TIMESTAMP,   
   prc_end_time TIMESTAMP,   
   prc_status VARCHAR2(100),   
   prc_msg VARCHAR2(4000)   
   );   
      
   create table prc_run_log_details (   
   prc_run_log_id INTEGER,   
   prc_run_config_id INTEGER,   
   prc_timestamp TIMESTAMP,   
   prc_sql VARCHAR2(4000),   
   prc_msg VARCHAR2(4000)   
   );   
      
   create table PARTY (   
   party_id INTEGER,   
   party_key VARCHAR2(100)   
   )   
      
   TRUNCATE TABLE PARTY;   
      
   DECLARE   
   BEGIN   
   FOR i IN 1..111   
   LOOP   
   INSERT INTO PARTY VALUES (i,SYS_GUID());   
   END LOOP;   
   END;   
   /   
   select rownum,party_id,party_num from party   
      
   create table prc_party_status (   
   prc_id INTEGER,   
   prc_status VARCHAR2(100),   
   party_key VARCHAR2(100)   
   )   
      
   TRUNCATE TABLE prc_party_status;   
      
   INSERT INTO prc_party_status SELECT ROW_NUMBER() OVER(ORDER BY p   
   rty_id),'PENDING',party_key FROM party   
      
   select * From prc_party_status   
   111   
   select ROUND(111/10) from dual   
   --proc_gen_run_config (prc_name, v_batch_size)   
   DECLARE   
     v_total INT;   
     v_start_range INT;   
     v_end_range INT;   
     v_loop_count INT;   
     v_batch_size INT;   
   BEGIN   
     v_batch_size := 25;   
     SELECT count(*) INTO v_total FROM PARTY_BATCH_PRC;   
     SELECT ROUND(v_total/v_batch_size) INTO v_loop_count from DUAL;   
     FOR i IN 1..v_loop_count   
     LOOP   
       IF i = 1 THEN   
         v_start_range := 1;   
         v_end_range := v_batch_size;   
       ELSIF i = v_loop_count THEN   
         v_start_range := v_end_range+1;   
         v_end_range := v_total;   
       ELSE   
         v_start_range := v_end_range+1;   
         v_end_range := v_start_range + v_batch_size - 1;   
       END IF;   
       INSERT INTO prc_run_config VALUES (i,'LOAD_CORE_TBL',v_start   
   range,v_end_range,SYSTIMESTAMP);   
     END LOOP;   
   END;   
   /   
      
   truncate table prc_run_config   
   select * from prc_run_config   
      
   --proc_run_prc (prc_run_config_id)   
   DECLARE   
     v_start_range INT;   
     v_end_range INT;   
     v_prc_status VARCHAR2(100);   
     v_party_key VARCHAR2(100);   
     v_sql_error VARCHAR2(1000);   
     v_sql VARCHAR2(4000);   
     v_run_config_id INT;   
     v_prc_run_log_id INT;   
   BEGIN   
     v_run_config_id := 1;   
     SELECT prc_start_range,prc_end_range INTO v_start_range,v_end_range FROM   
   PRC_RUN_CONFIG WHERE prc_run_config_id=v_run_config_id;   
     SELECT NVL(MAX(prc_run_log_id)+1,1) INTO v_prc_run_log_id FROM   
   prc_run_log_summary;   
     INSERT INTO prc_run_log_summary VALUES (v_prc_run_log_id,v_run   
   config_id,SYSTIMESTAMP,NULL,'STARTED','Processing started');   
     COMMIT;   
     FOR i IN v_start_range..v_end_range   
     LOOP   
       SELECT party_key,prc_status INTO v_party_key,v_prc_status FROM   
   prc_party_status WHERE prc_id = i;   
       IF v_prc_status = 'PENDING' THEN   
         DBMS_OUTPUT.PUT_LINE('Processing party ' || v_party_key || '...');   
         BEGIN   
           v_sql := 'SELECT 1 FROM TBL';   
           EXECUTE IMMEDIATE v_sql;   
           UPDATE prc_party_status SET prc_status='SUCCESS' WHERE prc_id = i;   
           COMMIT;   
         EXCEPTION   
         WHEN OTHERS THEN   
           ROLLBACK;   
           DBMS_OUTPUT.PUT_LINE (SQLERRM);   
           v_sql_error := SQLERRM;   
           UPDATE prc_party_status SET prc_status='FAILED' WHERE prc_id = i;   
           INSERT INTO prc_run_log_details VALUES (v_prc_run_log_id   
   v_run_config_id,SYSTIMESTAMP,v_sql,v_sql_error);   
           COMMIT;   
         END;   
       ELSE   
         DBMS_OUTPUT.PUT_LINE('Skipping party ' || v_party_key || '...');   
       END IF;   
     END LOOP;   
     UPDATE prc_run_log_summary SET prc_end_time=SYSTIMESTAMP, prc_   
   tatus='COMPLETED', prc_msg='Processing completed' WHERE prc_run_   
   og_id=v_prc_run_log_id;   
     COMMIT;   
     EXCEPTION   
     WHEN OTHERS THEN   
       ROLLBACK;   
       DBMS_OUTPUT.PUT_LINE (SQLERRM);   
       v_sql_error := SQLERRM;   
       UPDATE prc_run_log_summary SET prc_end_time=SYSTIMESTAMP, pr   
   _status='FAILED', prc_msg=v_sql_error WHERE prc_run_log_id=v_prc_run_log_id;   
       COMMIT;   
   END;   
   /   
      
   truncate table prc_run_log_summary   
   truncate table prc_run_log_details   
   select * from prc_run_log_summary   
   select * from prc_run_log_details   
   select * from prc_party_status   
   select * from prc_party_status   
      
   update prc_party_status set prc_status='PENDING'   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca