STUDY ROOM

프로시저(Oracle) 본문

SQL

프로시저(Oracle)

Eva_0401 2020. 7. 7. 14:44

 

CREATE OR REPLACE PROCEDURE 프로시저 이름

(/*인수 이름 IN 데이터타입 */
  ,IN_COL1     IN  VARCHAR2       --IN : 내부프로그램에 제공 
  ,IN_COL2     IN  VARCHAR2        
  ,IN_COL3     IN  VARCHAR2
  ,O_RESULT     OUT  VARCHAR2     --OUT : 호출자에게 제공, 프로시저 결과코드(-1:초기화오류, -2: 생성오류, 1:정상)
  ,O_MESSAGE     OUT  VARCHAR2    --프로시저 결과 메시지
)

IS

    OUT_CNT NUMBER := 0;         -- 변수 선언

BEGIN
  BEGIN
    UPDATE문
    ;
    OUT_CNT :=SQL%ROWCOUNT;         -- 가장 최근에 수행된 SQL문에 의해 영향을 받은 행의 갯수(정수값)

EXCEPTION                           -- 예외처리
        WHEN OTHERS THEN            -- WHEN OTHERS THEN  예외처리구문
        O_RESULT := '-1';
           O_MESSAGE  := '오류발생.';
        DBMS_OUTPUT.PUT_LINE(SQLERRM);    -- SQLERRM : SQLCODE에 포함된 오라클 오류번호에 해당하는 메시지를 가짐.
        ROLLBACK; RETURN;
  END ;    
           O_RESULT  := '2';
           O_MESSAGE := OUT_CNT;

END;

 

 

1. CREATTE OR REPLACE PROCEDURE 프로시저 이름  작성

 

2. 커서(암시적)

- SQL%ROWCOUNT : 해당 SQL문에 의해 반환된 총 행수, 가장 최근 수행된 SQL문에 의해 영향을 받은 행의 갯수(정수)

- SQL%FOUND : 해당 SQL문에 의해 반환된 총 행수가 1개 이상일 경우TRUE (BOOLEAN)

- SQL%NOTFOUND : 해당 SQL문에 의해 반환된 총 행수가 없을 경우 TRUE (BOOLEAN)

- SQL%ISOPEN : 항상 FALSE, 암시적 커서가 열려 있는지의 여부 검색( PL/SQL은 실행 후 바로 묵시적 커서를 닫기 때문에 항상 false)

 

3. 예외처리 

EXCEPTION

    WHEN 예외명1 THEN 예외처리 구문1

    WHEN 예외명2 THEN 예외처리 구문2

    WHEN OTHERS THEN 예외처리 구문n; 

 

4. 예외정보 참보

-SQLCODE는 실행부에서 발생한 예외에 해당하는 코드를 반환한다. 예를 들어, 0으로 나누면 이에 대한 예외 코드인 ‘-1476’을 반환한다. 만약 에러 없이 성공하면 ‘0’을 반환한다.

-SQLERRM은 발생한 예외에 대한 오류 메시지를 반환한다. 이 함수는 매개변수로 예외코드 값을 받는데, 매개변수를 넘기지 않으면 디폴트로 SQLCODE가 반환한 예외코드 값과 연관된 예외 메시지를 반환한다.

Comments