[Oracle] PL/SQL PROCEDURE Scripts Sample 설명
CREATE OR REPLACE PROCEDURE SAMPLE_PROCE AS
-- SELETE 문의 결과를 TEMP_CUR 라는 CURSOR 에 넣는다.
CURSOR TEMP_CUR IS
SELECT BWCODE, BWNAME, BWADDS
FROM TEMP_TAB;
-- TEMP_CUR의 타입을 그대로 사용할 수 있는 NOW_CUR 변수선언
NOW_CUR TEMP_CUR%ROWTYPE;
BEGIN
-- 커서 사용을 위해서 연다.
OPEN TEMP_CUR;
-- 반복문 시작
LOOP
-- 커서의 ROW를 NOW_CUR로 보낸다.
FETCH TEMP_CUR INTO NOW_CUR;
-- DBMS_OUTPUT.put_line('LOOP 시작');
-- 커서가 끝나면 반복문을 종료한다.
EXIT WHEN TEMP_CUR%NOTFOUND;
--조건문 사용
IF (NOW_CUR.BWCODE <> 'A') THEN
ELSIF -- 또는 ELSE IF
ELSE
END IF;
INSERT INTO NEW_TAB ( BWCODE, BWNAME, BWADDS )
VALUES ( NOW_CUR.BWCODE, NOW_CUR.BWNAME, NOW_CUR.BWADDS );
COMMIT;
END LOOP;
-- 커서를 닫는다.
CLOSE TEMP_CUR;
EXCEPTION
WHEN OTHERS THEN
-- 에러 발생시 에러 메시지 출력
-- 토드의 DBMS_OUTPUT 에서 확인 할 수 있다.
DBMS_OUTPUT.put_line('ERROR');
ROLLBACK;
END;
실행은 ~~
EXEC SAMPLE_PROCE;
디버깅은 ~~
CREATE OR REPLACE PROCEDURE SAMPLE_PROCE 부분을 DECLARE 로 바꾸고
중간중간마다 DBMS_OUTPUT.put_line(...) 를 이용해서 처리한다.
* 참고로 SET SERVEROUTPUT ON; 작성 후 실행해야 DBMS_OUTPUT 나옴.
'Database / Sql' 카테고리의 다른 글
[Oracle] PL/SQL - SELECT INTO (0) | 2012.12.21 |
---|---|
[Oracle] 10g 공간 줄일수 있는 테이블 찾기와 Shrink 실행하기 (0) | 2012.12.03 |
[Oracle] Toad 실행계획 (0) | 2012.11.23 |
[MS-SQL] JOIN UPDATE / DELETE (0) | 2012.11.23 |
[MS-SQL] 날짜 차이 계산 (0) | 2012.11.08 |