|
ORACLE PROCEDURE SAMPLE
------
CREATE OR REPLACE PROCEDURE SP_EMP_TEST
(
PARAM_EMPNO IN EMP.EMPNO%TYPE -- 프로시져 입력받은 첫번째 파라미터, 타입은 EMP테이블의 EMPNO필드와 동일
, PARAM_EMPNAME IN EMP.EMPNAME%TYPE -- 프로시져 입력받은 두번째 파라미터
)
IS
-- 사용 변수 선언
LOCAL_EMP_IDX EMP.EMP_IDX%TYPE; -- 변수 선언
CNT NUMBER := 0;
-- Cursor 선언
CURSOR EMP_TEMPS IS
SELECT * FROM EMP ORDER BY EMPNO ASC;
BEGIN
SET SERVEROUTPUT ON ; --DBMS_OUTPUT 메시지 버퍼 출력이 표준 출력으로 설정
FOR EMP_TEMP IN EMP_TEMPS LOOP
CNT := CNT + 1;
INSERT INTO EMP_COPY (EMPNO, EMPNAME, REGDT)
VALUES ( EMP_TEMP.EMPNO, EMP_TEMP.EMPNAME, SYSTIMESTAMP);
-- 표준 출력에 INSERT 결과 출력
DBMS_OUTPUT.PUT_LINE('EMP INSERT : ' || CNT || ' => INSERT OK, EMPNO :' || EMP_TEMP_EMPNO );
EXIT WHEN CNT > 100; -- 100건만 복사
END LOOP;
COMMIT; -- 반복문 종료시, 100건 한번에 커밋
EXCEPTION WHEN OTHERS THEN
ROLLBACK; -- 정상 종료 전에 오류 발생시, 롤백
DBMS_OUTPUT.PUT_LINE('ERROR CODE =' || SQLCODE || ', ERROR MESSAGE = ' || SQLERRM);
END SP_EMP_TEST;
-------
ORACLE PROCEDURE SAMPLE 실행
EXEC SP_EMP_TEST;
|