2012. 11. 27. 17:05

[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 나옴.