Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Long-running PL/SQL function (long)
Our developers sent me a function which is running quite long to see if I could give them any advice. It is written in PL/SQL for version 9.2.0.1 of Oracle on Sun Solaris. It is going across a database link. It reads tables in one database and loads a new table in a datamart table on another box. It looks like it will currently run for four or five days to load a 140 million-row table, which is longer than our available window.
I am wondering if anyone can look at the big picture and see if there are any obvious places for improvement of this overall design. I am open to any suggestions that I can relay back to the developers.
My gratitude to anyone who can wade through this and recommend improvements.
Cherie Machler
Oracle DBA
Gelco Information Network
FUNCTION exp_rpt_sts_load (
in_src_proc_no NUMBER, in_stt_dt DATE, in_stop_dt DATE, in_commit_interval NUMBER, in_err_threshold VARCHAR2, in_debugging BOOLEAN ) RETURN BOOLEAN IS
TYPE list_array IS VARRAY(200) OF VARCHAR2(2);
TYPE no_array IS VARRAY(200) OF NUMBER(10);
lv_pay_sts_array list_array :=
list_array(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
lv_sts_cnfr_no no_array :=
no_array(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); CURSOR c_exp_rpt_hdr IS
SELECT a.acct_no, a.cnfr_no, a.arrv_dt_tm, b.pay_type, b.status, b.wh_mod_dt_tm upd_dt_tm, b.wh_date_key, b.wh_time_key FROM exp_rpt_hdr a, exp_rpt_amt_type b WHERE b.wh_mod_dt_tm BETWEEN in_stt_dt AND in_stop_dt AND trans_type = 'R' AND a.cnfr_no = b.cnfr_no order by acct_no, cnfr_no;lv_handle);
-- c_exp_rpt_hdr storage values
lv_cnfr_no exp_rpt_hdr.cnfr_no%TYPE; lv_acct_no acct_pay_type.acct_no%TYPE; lv_pay_type acct_pay_type.pay_type%TYPE; CURSOR c_exp_rpt_dtls IS SELECT DISTINCT a.cnfr_no, b.line_seq_no, NVL(b.dtl_seq_no,0) dtl_seq_no, NVL(c.alloc_seq_no,0) alloc_seq_no, d.descr FROM exp_rpt_line_item_hdr a, exp_rpt_line_item_dtl b, exp_rpt_alloc c, acct_pay_type d WHERE a.cnfr_no = lv_cnfr_no AND b.pay_type = lv_pay_type AND a.cnfr_no = b.cnfr_no AND b.cnfr_no = c.cnfr_no(+) AND b.line_seq_no = c.line_seq_no(+) AND b.dtl_seq_no = c.dtl_seq_no(+) AND d.acct_no = lv_acct_no AND b.pay_type = d.pay_type ORDER BY b.line_seq_no, dtl_seq_no, alloc_seq_no;
-- c_exp_rpt_dtls storage values
lv_line_seq_no exp_rpt_line_item_dtl.line_seq_no%TYPE; lv_dtl_seq_no exp_rpt_line_item_dtl.dtl_seq_no%TYPE; lv_82_descr acct_pay_type.descr%TYPE;
-- Row definitions
r_exp_rpt_hdr c_exp_rpt_hdr%ROWTYPE; r_exp_rpt_dtls c_exp_rpt_dtls%ROWTYPE;
-- Miscellaneous local variables
lv_mgr_global_user_no acct_user.global_user_no%TYPE; lv_eff_dt_in DATE; lv_sql_code NUMBER; lv_sql_msg VARCHAR2(256); lv_step_txt VARCHAR2(160); lv_err_txt VARCHAR2(320); lv_sysdate DATE; lv_char_SYSDATE VARCHAR2(20); lv_handle UTL_FILE.FILE_TYPE; lv_status BOOLEAN := TRUE; lv_in_cnt NUMBER :=0; lv_row_cnt NUMBER :=0; lv_err_cnt NUMBER :=0; lv_run_log_no INTEGER :=0; lv_in_loop BOOLEAN; lv_82 BOOLEAN := FALSE; lv_pay_meth r_exp_rpt_hdr.pay_type%TYPE; lv_pay_sts r_exp_rpt_hdr.status%TYPE; lv_no_alloc_rec BOOLEAN; lv_ach_amt NUMBER := 0; loop_ctr NUMBER; lv_chng_dt DATE; lv_arrv_dt DATE; lv_loop NUMBER := 0; lv_tran_dt DATE;
-- Constants
c_proc_nm VARCHAR2(80) := 'load_edm_exp_rpt_sts'; BEGIN
-- File Control
lv_handle := WHSE_DEBUG_PKG.open_debug_log_file(c_proc_nm); lv_err_txt := 'Process ' || c_proc_nm || ', ' || 'Runtime ' || SYSDATE; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt,
--Run Log Start
lv_run_log_no := GlobalError.RunLogStart2(in_src_proc_no);
SELECT SYSDATE, TO_CHAR(SYSDATE, 'yyyymmddhh24miss') INTO lv_sysdate, lv_char_SYSDATE FROM dual;
-- Debug Control
IF in_debugging THEN lv_err_txt := 'Time ' || SYSDATE || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); END IF; lv_acct_no := 0; lv_cnfr_no := 0; lv_line_seq_no := 0; OPEN c_exp_rpt_hdr; LOOP FETCH c_exp_rpt_hdr INTO r_exp_rpt_hdr; EXIT WHEN c_exp_rpt_hdr%NOTFOUND; IF lv_acct_no <> r_exp_rpt_hdr.acct_no THEN BEGIN SELECT descr INTO lv_82_descr FROM acct_pay_type WHERE pay_type = 82 AND acct_no = lv_acct_no AND wh_mod_dt_tm = ( SELECT max(wh_mod_dt_tm) FROM acct_pay_type WHERE acct_no = lv_acct_no AND pay_type = 82) AND wh_row_eff_dt_tm = ( SELECT max(wh_row_eff_dt_tm) FROM acct_pay_type WHERE acct_no = lv_acct_no AND pay_type = 82); EXCEPTION WHEN OTHERS THEN lv_82_descr := 'COMPANY PAID'; END; END IF; IF lv_cnfr_no <> r_exp_rpt_hdr.cnfr_no THEN IF lv_82 THEN loop_ctr := 0; LOOP loop_ctr := loop_ctr +1; IF lv_pay_sts_array(loop_ctr) IS NULL THEN EXIT; END IF; IF ((lv_pay_sts_array(loop_ctr) IS NOT NULL) AND (lv_sts_cnfr_no(loop_ctr) = lv_cnfr_no)) THEN BEGIN INSERT INTO edm_exp_rpt_sts( cnfr_no, pay_meth, line_seq_no, dtl_seq_no, alloc_seq_no, pay_sts, pay_meth_descr, acct_no, sts_chng_dt, arrival_dt, src_proc_no, dm_load_dt, ach_amt, tran_dt) VALUES( lv_cnfr_no, 82, lv_line_seq_no+1, 1, 0, lv_pay_sts_array(loop_ctr), lv_82_descr, lv_acct_no, lv_chng_dt, lv_arrv_dt, in_src_proc_no, lv_sysdate, lv_ach_amt, lv_tran_dt ); lv_row_cnt := lv_row_cnt + 1; IF MOD(lv_row_cnt,in_commit_interval) = 0 THEN COMMIT; END IF; EXCEPTION WHEN OTHERS THEN NULL; END; END IF; lv_pay_sts_array(loop_ctr) := NULL; lv_sts_cnfr_no(loop_ctr) := NULL; END LOOP; loop_ctr := 1; lv_82 := FALSE; END IF; lv_line_seq_no := 0; END IF; lv_cnfr_no := r_exp_rpt_hdr.cnfr_no; lv_acct_no := r_exp_rpt_hdr.acct_no; lv_pay_type := r_exp_rpt_hdr.pay_type; lv_pay_sts := r_exp_rpt_hdr.status; lv_chng_dt := r_exp_rpt_hdr.upd_dt_tm; lv_arrv_dt := r_exp_rpt_hdr.arrv_dt_tm; lv_pay_meth := r_exp_rpt_hdr.pay_type; loop_ctr := 1; LOOP IF lv_pay_sts_array(loop_ctr) IS NULL THEN lv_pay_sts_array(loop_ctr) := lv_pay_sts; lv_sts_cnfr_no(loop_ctr) := lv_cnfr_no; EXIT; ELSIF lv_pay_sts_array(loop_ctr) = lv_pay_sts THEN EXIT; ELSE loop_ctr := loop_ctr +1; END IF; END LOOP; lv_step_txt := 'Working on exp_rpt_hdr Acct_no :' || r_exp_rpt_hdr.acct_no; IF lv_pay_type = 82 THEN lv_82 := TRUE; END IF; -- Debug Control IF in_debugging THEN lv_err_txt := 'Time ' || SYSDATE || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); END IF; OPEN c_exp_rpt_dtls; LOOP FETCH c_exp_rpt_dtls INTO r_exp_rpt_dtls; EXIT WHEN c_exp_rpt_dtls%NOTFOUND; IF r_exp_rpt_dtls.line_seq_no > lv_line_seq_no THEN lv_line_seq_no := r_exp_rpt_dtls.line_seq_no; END IF; lv_step_txt := 'Working on exp_rpt_dtls cnfr_no :' || r_exp_rpt_dtls.cnfr_no; -- Debug Control IF in_debugging THEN lv_err_txt := 'Time ' || SYSDATE || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); END IF; BEGIN SELECT distinct ach_amt, tran_dt INTO lv_ach_amt, lv_tran_dt FROM ach_tran WHERE cnfr_no = lv_cnfr_no AND splt_pay_type = lv_pay_meth AND status = lv_pay_sts; EXCEPTION WHEN NO_DATA_FOUND THEN lv_ach_amt := NULL; lv_tran_dt := NULL; WHEN OTHERS THEN lv_sql_code := SQLCODE; lv_sql_msg := SQLERRM(lv_sql_code); lv_step_txt := 'Exception Thrown ' || lv_sql_msg; -- Debug Control IF in_debugging THEN lv_err_txt := 'Time ' || TO_CHAR(SYSDATE,'MM:DD:YYYY HH24:MI:SS') || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); END IF; --Log error GlobalError.LogSQLError(in_src_proc_no, lv_sql_code, lv_sql_msg, lv_step_txt); lv_err_cnt := lv_err_cnt + 1; IF MOD(lv_err_cnt,in_err_threshold) = 0 THEN lv_step_txt := c_proc_nm || ' failed'; lv_err_txt := 'Time ' || TO_CHAR(SYSDATE,'MM:DD:YYYY HH24:MI:SS') || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); --Run Log Stop GlobalError.RunLogStop2(in_src_proc_no, lv_run_log_no); lv_status := WHSE_DEBUG_PKG.close_debug_log_file(lv_handle); RETURN FALSE; END IF; END; BEGIN INSERT INTO edm_exp_rpt_sts (cnfr_no, pay_meth, line_seq_no, dtl_seq_no, alloc_seq_no, pay_sts, pay_meth_descr, acct_no, sts_chng_dt, arrival_dt, src_proc_no, dm_load_dt, ach_amt, tran_dt) VALUES( r_exp_rpt_hdr.cnfr_no, r_exp_rpt_hdr.pay_type, r_exp_rpt_dtls.line_seq_no, r_exp_rpt_dtls.dtl_seq_no, r_exp_rpt_dtls.alloc_seq_no, r_exp_rpt_hdr.status, r_exp_rpt_dtls.descr, r_exp_rpt_hdr.acct_no, r_exp_rpt_hdr.upd_dt_tm, r_exp_rpt_hdr.arrv_dt_tm, in_src_proc_no, lv_sysdate, lv_ach_amt, lv_tran_dt); lv_row_cnt := lv_row_cnt + 1; IF MOD(lv_row_cnt, in_commit_interval) = 0 THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; /* COMMIT; UPDATE edm_exp_rpt_sts SET ach_amt = lv_ach_amt, src_proc_no = in_src_proc_no, dm_load_dt = lv_sysdate, tran_dt = lv_tran_dt WHERE cnfr_no = lv_cnfr_no AND pay_sts = lv_pay_sts AND pay_meth = lv_pay_meth; COMMIT;*/ WHEN OTHERS THEN lv_sql_code := SQLCODE; lv_sql_msg := SQLERRM(lv_sql_code); lv_step_txt := 'Exception Thrown Exception report sts ' || lv_sql_msg; --Log error GlobalError.LogSQLError(in_src_proc_no, lv_sql_code, lv_sql_msg, lv_step_txt); lv_err_cnt := lv_err_cnt + 1; IF MOD(lv_err_cnt,in_err_threshold) = 0 THEN lv_step_txt := c_proc_nm|| ' failed'; lv_err_txt := 'Time ' || SYSDATE || lv_step_txt; lv_status :=
WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt,
lv_handle);
--Run Log Stop GlobalError.RunLogStop2(in_src_proc_no, lv_run_log_no); lv_status :=
WHSE_DEBUG_PKG.close_debug_log_file(lv_handle);
RETURN FALSE; END IF; -- Debug Control IF in_debugging THEN lv_err_txt := 'Time ' || SYSDATE || lv_step_txt; lv_status :=
WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt,
lv_handle);
END IF; END; END LOOP; CLOSE c_exp_rpt_dtls; END LOOP; close c_exp_rpt_hdr; IF lv_82 THEN loop_ctr := 0; LOOP loop_ctr := loop_ctr +1; IF lv_pay_sts_array(loop_ctr) IS NULL THEN EXIT; END IF; IF ((lv_pay_sts_array(loop_ctr) IS NOT NULL) AND (lv_sts_cnfr_no(loop_ctr) = lv_cnfr_no)) THEN BEGIN INSERT INTO edm_exp_rpt_sts( cnfr_no, pay_meth, line_seq_no, dtl_seq_no, alloc_seq_no, pay_sts, pay_meth_descr, acct_no, sts_chng_dt, arrival_dt, src_proc_no, dm_load_dt, ach_amt, tran_dt) VALUES( r_exp_rpt_hdr.cnfr_no, 82, lv_line_seq_no+1, 1, 0, lv_pay_sts_array(loop_ctr), lv_82_descr, r_exp_rpt_hdr.acct_no, r_exp_rpt_hdr.upd_dt_tm, r_exp_rpt_hdr.arrv_dt_tm, in_src_proc_no, lv_sysdate, lv_ach_amt, lv_tran_dt ); lv_row_cnt := lv_row_cnt + 1; IF MOD(lv_row_cnt,in_commit_interval) = 0 THEN COMMIT; END IF; EXCEPTION WHEN OTHERS THEN NULL; END; END IF; END LOOP; END IF; lv_step_txt := c_proc_nm || ' completed successfully'; lv_err_txt := 'Time ' || TO_CHAR(SYSDATE,'MM:DD:YYYY HH24:MI:SS') || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle);
--On success, lets log our results
GlobalError.RunLogUnits2(in_src_proc_no, lv_run_log_no, lv_in_cnt, lv_row_cnt, lv_err_cnt);
--Run Log Stop - Now pass back the run log id and indicate completion
GlobalError.RunLogStop2(in_src_proc_no, lv_run_log_no); lv_status := WHSE_DEBUG_PKG.close_debug_log_file(lv_handle);
--Success, let's tell that to who called us
RETURN TRUE; EXCEPTION WHEN OTHERS THEN lv_sql_code := SQLCODE; lv_sql_msg := SQLERRM(lv_sql_code); lv_step_txt := 'Exception Thrown ' || lv_sql_msg; -- Debug Control IF in_debugging THEN lv_err_txt := 'Time ' || TO_CHAR(SYSDATE,'MM:DD:YYYY HH24:MI:SS') || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); END IF; --Log error GlobalError.LogSQLError(in_src_proc_no, lv_sql_code, lv_sql_msg, lv_step_txt); lv_err_cnt := lv_err_cnt + 1; lv_step_txt := c_proc_nm || ' failed'; lv_err_txt := 'Time ' || TO_CHAR(SYSDATE,'MM:DD:YYYY HH24:MI:SS') || lv_step_txt; lv_status := WHSE_DEBUG_PKG.write_debug_log_file(lv_err_txt, lv_handle); --Run Log Stop GlobalError.RunLogStop2(in_src_proc_no, lv_run_log_no); lv_status := WHSE_DEBUG_PKG.close_debug_log_file(lv_handle); RETURN FALSE;
END exp_rpt_sts_load;
SQL> desc exp_rpt_hdr
Name Null? Type ----------------------------------------- -------- ---------------------------- CNFR_NO NOT NULL NUMBER(20) WH_DATE_KEY NOT NULL NUMBER(5) WH_MOD_DT_TM NOT NULL DATE WH_ROW_STS NOT NULL VARCHAR2(1) WH_ROW_EFF_DT_TM NOT NULL DATE MOD_GLOBAL_USER_NO NOT NULL NUMBER(15) TGT_CNFR_NO NOT NULL NUMBER(20) EXP_RPT_NO NUMBER(6) TRANS_TYPE NOT NULL VARCHAR2(1) TRANS_ID NOT NULL NUMBER(38) ACCT_NO NOT NULL NUMBER(9) GLOBAL_USER_NO NOT NULL NUMBER(15) INTL_REP_NO NOT NULL NUMBER(5) SUBMIT_DT_TM NOT NULL DATE START_DT NOT NULL DATE END_DT NOT NULL DATE EXP_RPT_STATUS NOT NULL VARCHAR2(1) ACCT_REV_NO NOT NULL NUMBER(18) UPD_DT_TM NOT NULL DATE ARRV_DT_TM NOT NULL DATE VER_NO VARCHAR2(7) EXE_VER_NO NUMBER(4,2) TITLE VARCHAR2(40) PURPOSE VARCHAR2(65) MSG_IND VARCHAR2(1) PRXY_CRTN_ID NUMBER(5) PRXY_SUBM_ID NUMBER(5) EXTL_ER_ID VARCHAR2(40) EXTL_TITLE VARCHAR2(40) EXTL_APPL_NAME VARCHAR2(40) EXTL_APPL_VER_ID VARCHAR2(40) DFLT_ORG_LVL1 VARCHAR2(20) DFLT_ORG_LVL2 VARCHAR2(20) DFLT_ORG_LVL3 VARCHAR2(20) DFLT_ORG_LVL4 VARCHAR2(20) REMARKS VARCHAR2(4000) IMAGED_IND VARCHAR2(1) AUDIT_TYPE VARCHAR2(1) SQL> desc exp_rpt_amt_type Name Null? Type ----------------------------------------- -------- ---------------------------- CNFR_NO NOT NULL NUMBER(20) PAY_TYPE NOT NULL NUMBER(3) WH_DATE_KEY NOT NULL NUMBER(5) WH_TIME_KEY NOT NULL NUMBER(5) WH_MOD_DT_TM NOT NULL DATE MOD_GLOBAL_USER_NO NOT NULL NUMBER(15) AMOUNT NOT NULL NUMBER(20,2) STATUS NOT NULL VARCHAR2(1) UPD_DT_TM NOT NULL DATE SQL> desc exp_rpt_alloc Name Null? Type ----------------------------------------- -------- ---------------------------- CNFR_NO NOT NULL NUMBER(20) LINE_SEQ_NO NOT NULL NUMBER(6) DTL_SEQ_NO NOT NULL NUMBER(6) ALLOC_SEQ_NO NOT NULL NUMBER(6) WH_DATE_KEY NOT NULL NUMBER(5) WH_MOD_DT_TM NOT NULL DATE MOD_GLOBAL_USER_NO NOT NULL NUMBER(15) UPD_DT_TM NOT NULL DATE ALLOC_AMT NOT NULL NUMBER(20,2) PROJ_NO VARCHAR2(40) ORG_LVL1 VARCHAR2(20) ORG_LVL2 VARCHAR2(20) ORG_LVL3 VARCHAR2(20) ORG_LVL4 VARCHAR2(20) ORG_LVL5 VARCHAR2(20) ORG_LVL6 VARCHAR2(20) ORG_LVL7 VARCHAR2(20) ORG_LVL8 VARCHAR2(20) SQL> desc acct_pay_type Name Null? Type ----------------------------------------- -------- ---------------------------- ACCT_NO NOT NULL NUMBER(9) REV_NO NOT NULL NUMBER(20) PAY_TYPE NOT NULL NUMBER(3) WH_DATE_KEY NOT NULL NUMBER(5) WH_TIME_KEY NOT NULL NUMBER(5) WH_MOD_DT_TM NOT NULL DATE WH_ROW_STS NOT NULL VARCHAR2(1) WH_ROW_EFF_DT_TM NOT NULL DATE MOD_GLOBAL_USER_NO NOT NULL NUMBER(15) UPD_DT_TM NOT NULL DATE DESCR NOT NULL VARCHAR2(20) STATUS NOT NULL VARCHAR2(1) GL_CODE VARCHAR2(12) REIMBURSE_IND VARCHAR2(1) SQL> desc exp_rpt_line_item_dtl Name Null? Type ----------------------------------------- -------- ---------------------------- CNFR_NO NOT NULL NUMBER(20) LINE_SEQ_NO NOT NULL NUMBER(6) DTL_SEQ_NO NOT NULL NUMBER(6) WH_DATE_KEY NOT NULL NUMBER(5) WH_MOD_DT_TM NOT NULL DATE MOD_GLOBAL_USER_NO NOT NULL NUMBER(15) EXP_CAT NOT NULL NUMBER(4) PAY_TYPE NOT NULL NUMBER(3) LINE_ITEM_DT NOT NULL DATE LINE_ITEM_AMT NOT NULL NUMBER(20,2) UPD_DT_TM NOT NULL DATE CURR_RATE NUMBER(17,8) CURR_AMT NUMBER(20,2) VENDOR VARCHAR2(30) LOCATION VARCHAR2(30) PURPOSE VARCHAR2(30) EXTL_LINE_SEQ_ID VARCHAR2(40) LINE_ITEM_REMARKS VARCHAR2(4000) SQL> desc ach_tran Name Null? Type ----------------------------------------- -------- ---------------------------- CNFR_NO NOT NULL NUMBER(20) SPLT_PAY_TYPE NOT NULL VARCHAR2(3) STATUS NOT NULL VARCHAR2(1) TRACE_NO NOT NULL NUMBER(10) WH_DATE_KEY NOT NULL NUMBER(5) WH_MOD_DT_TM NOT NULL DATE WH_ROW_STS NOT NULL VARCHAR2(1) WH_ROW_EFF_DT_TM NOT NULL DATE PROC_STATUS NOT NULL VARCHAR2(1) ACCT_NO NOT NULL NUMBER(9) INTL_REP_NO NOT NULL NUMBER(5) TRAN_DT NOT NULL DATE TRAN_TYPE NOT NULL VARCHAR2(1) STLMNT_DT NOT NULL DATE UPD_DT_TM NOT NULL DATE APP_NO NUMBER(10) ACH_AMT NUMBER(20,2) RET_REAS_CD VARCHAR2(3) BNK_ABA_ROUT_NO NUMBER(10) BNK_ACCT_NO VARCHAR2(17) BNK_TRAN_CODE VARCHAR2(2) ACH_CURR_TYPE VARCHAR2(1) PAYEE_NAME VARCHAR2(35) API_STATUS VARCHAR2(3) API_SUB_STATUS VARCHAR2(1) ENTRY_CLASS_IND VARCHAR2(1) SQL> desc edm_exp_rpt_sts Name Null? Type ----------------------------------------- -------- ---------------------------- CNFR_NO NOT NULL NUMBER(18) PAY_METH NOT NULL VARCHAR2(3) LINE_SEQ_NO NOT NULL NUMBER(6) DTL_SEQ_NO NOT NULL NUMBER(6) ALLOC_SEQ_NO NOT NULL NUMBER(6) PAY_STS NOT NULL VARCHAR2(1) PAY_METH_DESCR NOT NULL VARCHAR2(25) ACCT_NO NOT NULL NUMBER(9) STS_CHNG_DT NOT NULL DATE ARRIVAL_DT NOT NULL DATE SRC_PROC_NO NOT NULL NUMBER(10) DM_LOAD_DT NOT NULL DATE ACH_AMT NUMBER(20,2) TRAN_DT DATE
-- Please see the official ORACLE-L FAQ: http://www.orafaq.net -- Author: INET: Cherie_Machler_at_gelco.com Fat City Network Services -- 858-538-5051 http://www.fatcity.com San Diego, California -- Mailing list and web hosting services --------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing).Received on Tue Jan 07 2003 - 11:25:31 CST
![]() |
![]() |