STUDY ROOM
프로시저(Oracle) 본문
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가 반환한 예외코드 값과 연관된 예외 메시지를 반환한다.
'SQL' 카테고리의 다른 글
[MS-SQL 에러메세지] varchar 값 '*'을(를) 데이터 형식 int(으)로 변환하지 못했습니다. (0) | 2020.09.18 |
---|---|
[MS-SQL] 날짜 형식 변경하기 (0) | 2020.09.02 |
프로시저 호출(Oracle) (0) | 2020.07.07 |
LEFT JOIN 절 안에 SELECT문 (0) | 2020.06.16 |
[MS-SQL] 커서(Cursor) (0) | 2020.04.08 |
Comments