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,178 of 44,300    |
|    Yogesh Palrecha to All    |
|    ETL code in Oracle    |
|    16 Feb 23 05:26:28    |
   
   From: yogeshpalrecha@gmail.com   
      
   Trying to run this ETL code in Oracle. Not sure if this is a good design or   
   not. We are trying to build an ETL framework in Oracle which can handle   
   parallel processing and exception handling. Trying to run this ETL code in   
   Oracle. Not sure if this is a    
   good design or not.   
      
   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 (    
   prc_run_log_id INTEGER,   
   prc_run_config_id INTEGER,   
   prc_start_time TIMESTAMP,   
   prc_end_time TIMESTAMP,   
   prc_status VARCHAR2(100),   
   prc_run_sql VARCHAR2(4000),   
   prc_run_msg VARCHAR2(4000)   
   );   
      
   create table PARTY_LKP (    
   party_id INTEGER,   
   party_num VARCHAR2(100)   
   )   
      
   DECLARE   
   BEGIN   
    FOR i IN 1..100   
    LOOP   
    INSERT INTO PARTY_LKP VALUES (i,SYS_GUID());   
    END LOOP;   
   END;   
   /   
   select rownum,party_id,party_num from party_lkp   
      
   --proc_gen_run_config (prc_name, parallel_threads)   
   DECLARE   
    v_total INT;   
    v_start_range INT;   
    v_end_range INT;   
   BEGIN   
    SELECT count(*) INTO v_total FROM PARTY_LKP;   
    FOR i IN 1..10   
    LOOP   
    IF i = 1 THEN   
    v_start_range := 1;   
    v_end_range := v_total/10;   
    ELSE   
    v_start_range := v_end_range+1;   
    v_end_range := v_start_range + v_total/10 - 1;   
    END IF;   
    INSERT INTO prc_run_config VALUES (i,'LOAD_CORE_TBL',v_s   
   art_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_party_num VARCHAR2(100);   
    v_sql_error VARCHAR2(1000);   
   BEGIN   
    SELECT prc_start_range,prc_end_range INTO v_start_range,v_end_range FROM   
   PRC_RUN_CONFIG WHERE prc_run_config_id=1;   
    INSERT INTO prc_run_log VALUES (1,1,SYSTIMESTAMP,NULL,'START   
   D',NULL,'Processing started');   
    FOR i IN v_start_range..v_end_range   
    LOOP   
    SELECT party_num INTO v_party_num FROM PARTY_LKP WHERE party_id = i;   
    DBMS_OUTPUT.PUT_LINE('Processing party ' || v_party_num ||   
   '...');    
    END LOOP;   
    UPDATE prc_run_log SET prc_end_time=SYSTIMESTAMP, prc_status='COMPLETED',   
   prc_run_msg='Processing completed' WHERE prc_run_log_id=1;   
   EXCEPTION   
    WHEN OTHERS THEN   
    DBMS_OUTPUT.PUT_LINE (SQLERRM);   
    v_sql_error := SQLERRM;   
    UPDATE prc_run_log SET prc_end_time=SYSTIMESTAMP, prc_status='FAILED',   
   prc_run_msg=v_sql_error WHERE prc_run_log_id=1;   
   END;   
   /   
      
   SELECT rownum,party_num FROM PARTY_LKP WHERE rownum = 2;   
      
   truncate table prc_run_log   
   select * from prc_run_log   
      
   --- 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