2009년 2월 24일 화요일

bulk and forall sample

DECLARE

CURSOR c1 IS
SELECT
RCS_WBL_NUM,
RCS_RLT_COD,
-- RCS_SGN_IMG,
RCS_SGN_YMD,
RCS_DLV_ENO,
RCS_CFM_CND,
RCS_BAT_CND
FROM HDDRV_CUS_SGN
WHERE RCS_SGN_YMD BETWEEN SYSDATE - 210 AND SYSDATE - 200
AND ROWNUM <= 10000;

TYPE t_RCS_WBL_NUM IS TABLE OF HDDRV_CUS_SGN.RCS_WBL_NUM%TYPE;
TYPE t_RCS_RLT_COD IS TABLE OF HDDRV_CUS_SGN.RCS_RLT_COD%TYPE;
-- TYPE t_RCS_SGN_IMG IS TABLE OF HDDRV_CUS_SGN.RCS_SGN_IMG%TYPE;
TYPE t_RCS_SGN_YMD IS TABLE OF HDDRV_CUS_SGN.RCS_SGN_YMD%TYPE;
TYPE t_RCS_DLV_ENO IS TABLE OF HDDRV_CUS_SGN.RCS_DLV_ENO%TYPE;
TYPE t_RCS_CFM_CND IS TABLE OF HDDRV_CUS_SGN.RCS_CFM_CND%TYPE;
TYPE t_RCS_BAT_CND IS TABLE OF HDDRV_CUS_SGN.RCS_BAT_CND%TYPE;

x_RCS_WBL_NUM t_RCS_WBL_NUM ;
x_RCS_RLT_COD t_RCS_RLT_COD ;
-- x_RCS_SGN_IMG t_RCS_SGN_IMG ;
x_RCS_SGN_YMD t_RCS_SGN_YMD ;
x_RCS_DLV_ENO t_RCS_DLV_ENO ;
x_RCS_CFM_CND t_RCS_CFM_CND ;
x_RCS_BAT_CND t_RCS_BAT_CND ;
inx1 PLS_INTEGER;

v_InsertStmt VARCHAR2(2000);

BEGIN

OPEN c1;
FETCH c1 BULK COLLECT INTO
x_RCS_WBL_NUM,
x_RCS_RLT_COD,
-- x_RCS_SGN_IMG,
x_RCS_SGN_YMD,
x_RCS_DLV_ENO,
x_RCS_CFM_CND,
x_RCS_BAT_CND;
CLOSE c1;

v_InsertStmt := 'INSERT INTO HDDRV_CUS_SGN_TRG(RCS_WBL_NUM,RCS_RLT_COD,RCS_SGN_IMG,RCS_SGN_YMD,RCS_DLV_ENO,RCS_CFM_CND,RCS_BAT_CND) VALUES (:1, :2, :3, :4, :5, :6, :7)';


FORALL x IN x_RCS_WBL_NUM.FIRST..x_RCS_WBL_NUM.LAST
INSERT INTO HDDRV_CUS_SGN_TRG(RCS_WBL_NUM,RCS_RLT_COD,RCS_SGN_IMG,RCS_SGN_YMD,RCS_DLV_ENO,RCS_CFM_CND,RCS_BAT_CND)
VALUES (x_RCS_WBL_NUM(x),x_RCS_RLT_COD(x),fn_get_cus_sign2@hddrts (x_RCS_WBL_NUM(x)),x_RCS_SGN_YMD(x),x_RCS_DLV_ENO(x),x_RCS_CFM_CND(x),x_RCS_BAT_CND(x));
END;
/

댓글 없음:

댓글 쓰기