투케이2K
133. (Oracle/오라클) 프로시저 (procedure) 특정 부서 인원 출력 - input, output, cursor 본문
133. (Oracle/오라클) 프로시저 (procedure) 특정 부서 인원 출력 - input, output, cursor
투케이2K 2021. 7. 7. 12:42/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : Toad
개발 언어 : Oracle
/* =========================== */
/* =========================== */
[소스 코드]
CREATE OR REPLACE PROCEDURE TEST_USER_PROCEDURE (
I_DEPT IN VARCHAR,
O_MSG OUT VARCHAR,
O_CURSOR OUT SYS_REFCURSOR
)
/***************************************************************
설명 - 특정 부서 목록
---------------------------------------------------------------
생성 - edit 창에서 F9를 눌러서 쿼리 실행 시 자동 생성된다
---------------------------------------------------------------
IN - I_DEPT - 부서
---------------------------------------------------------------
OUT - O_MSG - 반환 결과 메시지
O_CURSOR - 반환 커서 데이터 (테이블)
---------------------------------------------------------------
프로시져 호출 - EXEC TEST_USER_PROCEDURE('백제', :AA,:BB);
---------------------------------------------------------------
프로시져 결과 - Y : MESSAGE
N : MESSAGE
---------------------------------------------------------------
프로시져 삭제 - DROP PROCEDURE TEST_USER_PROCEDURE;
****************************************************************/
--AS --선택
IS --선택
/* **************** [전역변수 생성 및 초기화] ***************** */
M_DEPT VARCHAR2 (50);
M_DEBUG INTEGER;
/* *************** [메인부분 시작 및 커서생성] **************** */
BEGIN
/* =========== [변수값 대입 실시] =========== */
M_DEPT := I_DEPT;
/* ========= [M_DEPT 널 검증 실시] ========= */
M_DEBUG := 1; -- 디버깅 단계 지정
IF M_DEPT IS NULL OR M_DEPT = ''
THEN
BEGIN
O_MSG := 'N : ' || 'M_DEPT IS NULL' || ' [M_DEBUG := '|| M_DEBUG ||']';
OPEN O_CURSOR FOR SELECT '' AS "DATA_TABLE" FROM DUAL;
END;
RETURN; -- 프로시져 종료
END IF;
/* == [커서 생성 및 커서로 반환할 쿼리 실행] == */
M_DEBUG := 2; -- 디버깅 단계 지정
OPEN O_CURSOR FOR
SELECT *
FROM TEST_USER
WHERE TRIM(T_DEPT) = TRIM(M_DEPT);
/* =========== [프로시저 종료] ============ */
M_DEBUG := 3; -- 디버깅 단계 지정
O_MSG := 'Y : SUCCESS';
-- RETURN;
/* ======== [예외 발생 메시지 리턴] ======== */
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
O_MSG := 'N : ' || 'EXCEPTION' || ' [NO_DATA_FOUND]';
OPEN O_CURSOR FOR SELECT '' AS "DATA_TABLE" FROM DUAL;
END;
WHEN OTHERS
THEN
BEGIN
O_MSG := 'N : ' || 'EXCEPTION' || ' [M_DEBUG := '|| M_DEBUG ||']';
OPEN O_CURSOR FOR SELECT '' AS "DATA_TABLE" FROM DUAL;
END;
/* **************** [프로시저 종료 완료 부분] ***************** */
END TEST_USER_PROCEDURE;
/
/* =========================== */
[결과 출력]
/* =========================== */
/* =========================== */
[요약 설명]
설명 - 특정 부서 목록
--------------------------------------------
생성 - edit 창에서 F9를 눌러서 쿼리 실행 시 자동 생성된다
--------------------------------------------
IN - I_DEPT - 부서
--------------------------------------------
OUT - O_MSG - 반환 결과 메시지
O_CURSOR - 반환 커서 데이터 (테이블)
--------------------------------------------
프로시져 호출 - EXEC TEST_USER_PROCEDURE('백제', :AA,:BB);
--------------------------------------------
프로시져 결과 - Y : MESSAGE
N : MESSAGE
--------------------------------------------
프로시져 삭제 - DROP PROCEDURE TEST_USER_PROCEDURE;
/* =========================== */
'OracleDB' 카테고리의 다른 글
135. (Oracle/오라클) function 함수 생성 및 for in loop 개별 데이터 json 형식으로 반환 실시 (0) | 2021.07.20 |
---|---|
134. (Oracle/오라클) BLOB (블랍) 설명 및 테이블 생성 , 이미지 저장 결과 확인 실시 (0) | 2021.07.15 |
132. (Oracle/오라클) 오라클 현재 시간에서 곱하기, 나누기, 더하기, 빼기 연산 수행해 시간 계산 실시 (0) | 2021.05.24 |
131. (Oracle/오라클) Excel 엑셀 파일 데이터 toad 사용해 업로드 실시 - 더미 데이터 삽입 실시 (0) | 2021.05.21 |
130. (Oracle/오라클) grouping sets 다중 컬럼 사용해 그룹 별 소계 및 합계 구하기 실시 (0) | 2021.05.06 |