CURSOR는 아래에서 사용됩니다.
이것은 PROCEDURE 예제입니다.
커서로 조회한 데이터는 MERGE INTO로 검색할 수 있습니다.
존재하는 경우 UPT_DATE를 변경하고 데이터가 없으면 입력하십시오.
CREATE OR REPLACE PROCEDURE PRC_SAMPLE (V_YMD IN VARCHAR2, V_CNT OUT NUMBER)
IS
CURSOR CURSOR_DATA (P_YMD IN VARCHAR2)
IS
SELECT YMD, CODE, COUNT (1) CNT
FROM TB_SAMPLE
WHERE YMD = P_YMD;
RECORD_DATA CURSOR_DATA%ROWTYPE;
BEGIN
FOR RECORD_DATA IN CURSOR_DATA(V_YMD)
LOOP
MERGE INTO TB_TEST
USING DUAL
ON (YMD = RECORD_DATA.YMD AND CODE = RECORD_DATA.CODE)
WHEN MATCHED THEN
UPDATE SET UPT_DATE = SYSDATE
WHEN NOT MATCHED THEN
INSERT (YMD,
CODE,
CNT,
INS_DATE,
UPT_DATE)
VALUES (RECORD_DATA.YMD,
RECORD_DATA.CODE,
RECORD_DATA.CNT,
SYSDATE,
SYSDATE);
V_CNT := V_CNT + 1;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('SQLCODE = ' || TO_CHAR (SQLCODE) || ', SQLERRM = ' || SQLERRM);
ROLLBACK;
END;