CREATE OR REPLACE PACKAGE BODY /* * * */ -- pack_BhTest AS FUNCTION func_BhTest ( in_Num IN NUMBER ) RETURN t_DAcct_table PIPELINED AS lvsActvMsg VARCHAR2(100); l_out_row t_DAcct_row; lvnRowCount NUMBER := 0; lvnNum NUMBER; BEGIN lvnNum := in_Num; While (lvnRowCount<5) LOOP l_out_row.ACCTNBR := NULL; l_out_row.ACCTBAL := NULL; l_out_row.INTRATE := NULL; lvsActvMsg := 'Looping pack_BhTest.func_BhTest'; l_out_row.ACCTNBR :=lvnNum*lvnRowCount; l_out_row.ACCTBAL := lvnNum*2*lvnRowCount; l_out_row.INTRATE := lvnNum*0.25*lvnRowCount; PIPE ROW(l_out_row); lvnRowCount := lvnRowCount + 1; END LOOP; RETURN; EXCEPTION WHEN OTHERS THEN l_out_row.ACCTNBR := 1014; l_out_row.ACCTBAL := 1015; l_out_row.INTRATE := 5.74; PIPE ROW(l_out_row); RETURN; END func_BhTest; END pack_BhTest; ------------ CREATE OR REPLACE PACKAGE /* * * */ -- pack_BhTest AS TYPE t_DAcct_row IS RECORD ( ACCTNBR NUMBER, ACCTBAL NUMBER, INTRATE NUMBER, ); TYPE t_DAcct_table IS TABLE OF t_DAcct_row; FUNCTION func_BhTest ( in_PERSNBR IN Pers.PersNbr%TYPE, in_ORGNBR IN Org.OrgNbr%TYPE, in_DATE IN DATE, ) RETURN t_DAcct_table PIPELINED; FUNCTION func_BhTest ( in_PERSNBR IN Pers.PersNbr%TYPE, in_ORGNBR IN Org.OrgNbr%TYPE, in_DATE IN DATE, ) RETURN t_DAcct_table PIPELINED AS /************************************************************************************/ /***** GENERAL ERROR PROCESSING VARIABLES *****/ /************************************************************************************/ lvsActvMsg VARCHAR2(100); l_out_row t_DAcct_row; lvnRowCount NUMBER := 0; BEGIN While (lvnRowCount<5) LOOP l_out_row.ACCTNBR := NULL; l_out_row.ACCTBAL := NULL; l_out_row.INTRATE := NULL; lvsActvMsg := 'Looping pack_BhTest.func_BhTest'; l_out_row.ACCTNBR := 1012; l_out_row.ACCTBAL := 1013; l_out_row.INTRATE := 5.64; PIPE ROW(l_out_row); lvnRowCount := lvnRowCount + 1; END LOOP; RETURN; EXCEPTION WHEN OTHERS THEN l_out_row.ACCTNBR := 1014; l_out_row.ACCTBAL := 1015; l_out_row.INTRATE := 5.74; PIPE ROW(l_out_row); RETURN; END func_BhTest; END pack_BhTest; ------------------ DECLARE RetVal pack_BhTest.t_DAcct_table; IN_NUM NUMBER; BEGIN IN_NUM := 5; RetVal := OSIBANK.PACK_BHTEST.FUNC_BHTEST ( IN_NUM ); COMMIT; END;