Notice
Recent Posts
Recent Comments
Link
투케이2K
154. (Oracle/오라클) 프로시저 (procedure) - 다중 OUT MSG 아웃 메시지 반환 및 커서 테이블 반환 실시 본문
OracleDB
154. (Oracle/오라클) 프로시저 (procedure) - 다중 OUT MSG 아웃 메시지 반환 및 커서 테이블 반환 실시
투케이2K 2021. 9. 8. 12:44[개발 환경 설정]
개발 툴 : Toad
개발 언어 : Oracle
[소스 코드]
CREATE OR REPLACE PROCEDURE PRO_TEST_DATE
(
I_NO IN VARCHAR, -- 인풋 : [1] 일반 형식 / [2] 24 시간 형식
O_MSG OUT VARCHAR, -- 아웃풋 : 메시지 정보 (Y : SUCCESS / N:EXCEPTION)
O_DATE OUT VARCHAR, -- 아웃풋 : 날짜 정보 (2021-09-08 13:05:15)
O_CURSOR OUT SYS_REFCURSOR -- 아웃풋 : 커서 결과 테이블
)
/*******************************************************************************
[프로시져 호출]
EXEC PRO_TEST_DATE('1', :AA, :BB, :CC);
EXEC PRO_TEST_DATE('2', :AA, :BB, :CC);
---------------------------------------------------------------
[프로시져 삭제]
DROP PROCEDURE PRO_TEST_DATE;
*******************************************************************************/
IS
--AS
-- ============= [전역 변수 선언 실시] =============
M_DEBUG INTEGER; -- 디버깅 변수
M_DATE VARCHAR(100); -- 현재 날짜 담기 위한 변수
BEGIN
-- ============= [DEBUG STEP : [1]] =============
M_DEBUG := 1;
IF I_NO = '1' THEN -- [일반 시간 형태]
M_DATE := TO_CHAR (SYSDATE, 'YYYY-MM-DD HH:MI:SS');
ELSIF I_NO = '2' THEN -- [24시간 형태]
M_DATE := TO_CHAR (SYSDATE, 'YYYY-MM-DD HH24:MI:SS');
ELSE -- [알수 없는 값이나 NULL 값일 경우]
-- 아웃 메시지 삽입 실시
O_MSG := 'N : ' || 'I_NO ELSE';
O_DATE := '';
-- 커서 반환
OPEN O_CURSOR FOR SELECT '' AS "DATA_TABLE" FROM DUAL;
-- 프로시저 종료
RETURN;
END IF;
-- ============= [DEBUG STEP : [2]] =============
M_DEBUG := 2;
-- 커서 활성 실시 및 데이터 테이블 반환
OPEN O_CURSOR FOR
SELECT M_DATE
FROM DUAL;
-- 아웃 메시지 삽입 실시
O_MSG := 'Y : ' || 'SUCCESS';
O_DATE := M_DATE;
-- ============= [예외 상황 오류 발생 처리 구문] =============
EXCEPTION
WHEN NO_DATA_FOUND THEN
BEGIN
O_MSG := 'N : ' || 'EXCEPTION' || ' [NO_DATA_FOUND]';
O_DATE := '';
OPEN O_CURSOR FOR SELECT '' AS "DATA_TABLE" FROM DUAL;
END;
WHEN OTHERS THEN
BEGIN
O_MSG := 'N : ' || 'EXCEPTION' || ' [M_DEBUG := '|| M_DEBUG ||']';
O_DATE := '';
OPEN O_CURSOR FOR SELECT '' AS "DATA_TABLE" FROM DUAL;
END;
-- ================== [프로시저 종료 부분] ==================
END PRO_TEST_DATE;
/
[결과 출력]
반응형
'OracleDB' 카테고리의 다른 글
Comments