Notice
Recent Posts
Recent Comments
Link
투케이2K
166. (Oracle/오라클) 프로시저 (PROCEDURE) - 사용자 로그인 처리 수행 본문
[개발 환경 설정]
개발 툴 : Toad
개발 언어 : Oracle
[소스 코드]
/************************************************************/
CREATE OR REPLACE PROCEDURE PRO_MANAGER_LOGIN
(
I_ID IN VARCHAR, -- [필수 : 로그인 아이디]
I_PW IN VARCHAR, -- [필수 : 로그인 비밀번호]
O_MSG OUT VARCHAR, -- [리턴 : 메시지]
O_CURSOR OUT SYS_REFCURSOR -- [리턴 : 테이블]
)
/*************************************************************
[설 명] - 매니저 앱 사용자 로그인 처리 실시
-------------------------------------------------------------
[리 턴] - Y : MESSAGE / N : MESSAGE
-------------------------------------------------------------
[프로시져 호출]
EXEC PRO_MANAGER_LOGIN('testid', 'testpw', :AA, :BB);
-------------------------------------------------------------
[프로시져 삭제]
DROP PROCEDURE PRO_MANAGER_LOGIN;
**************************************************************/
--AS --선택
IS --선택
/******************* [전역변수 생성 및 초기화] *******************/
M_DEBUG VARCHAR2 (100); -- [디버깅 단계]
M_DATE VARCHAR2 (100); -- [현재 날짜 및 시간]
M_COUNT INTEGER; -- [매핑되는 조건 카운트]
/***************** [메인부분 시작 및 커서생성] *******************/
BEGIN
/*===================================*/
-- [디버깅 단계 지정]
M_DEBUG := '1';
-- [현재 날짜 및 시간 데이터 지정]
M_DATE := TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS');
/*===================================*/
-- [디버깅 단계 지정]
M_DEBUG := '2';
-- [필수 인풋 데이터 널 체크 실시]
IF I_ID IS NULL OR TRIM(I_ID) = ''
OR I_PW IS NULL OR TRIM(I_PW) = ''
THEN
BEGIN
-- [리턴 메시지 삽입]
O_MSG := 'N : ' || '인풋 데이터 값을 다시 확인해주세요. [I_ID] [I_PW]' || ' [M_DEBUG : '|| M_DEBUG ||']';
-- [리턴 테이블]
OPEN O_CURSOR FOR
SELECT '' AS "DATA_TABLE"
FROM DUAL;
END;
-- [프로시져 종료]
RETURN;
END IF;
/*===================================*/
-- [디버깅 단계 지정]
M_DEBUG := '3';
-- [등록된 사용자가 있는지 확인]
SELECT COUNT(*) INTO M_COUNT
FROM ADMIN_MANAGER
WHERE TRIM(MGR_ID) = TRIM(I_ID)
AND TRIM(MGR_PW) = TRIM(I_PW)
;
--/*
DBMS_OUTPUT.PUT_LINE('');
DBMS_OUTPUT.PUT_LINE('=============================');
DBMS_OUTPUT.PUT_LINE('[PRO_MANAGER_LOGIN] : [' || M_DEBUG || ']');
DBMS_OUTPUT.PUT_LINE('I_ID : ' || TRIM(I_ID) );
DBMS_OUTPUT.PUT_LINE('I_PW : ' || TRIM(I_PW) );
DBMS_OUTPUT.PUT_LINE('M_COUNT : ' || TO_CHAR(M_COUNT));
DBMS_OUTPUT.PUT_LINE('=============================');
DBMS_OUTPUT.PUT_LINE('');
--*/
-- [카운트 값 확인 실시]
IF M_COUNT > 0 THEN -- [검색된 데이터가 있는 경우 : 정상 로그인 사용자]
-- [디버깅 단계 지정]
M_DEBUG := '3-1-1';
BEGIN
-- [리턴 테이블]
OPEN O_CURSOR FOR
SELECT MGR_UNIV AS 학교 ,
MGR_ID AS 아이디 ,
MGR_PW AS 비밀번호 ,
MGR_NOTE AS 노트 ,
MGR_UPDT AS 일자
FROM ADMIN_MANAGER
WHERE TRIM(MGR_ID) = TRIM(I_ID)
AND TRIM(MGR_PW) = TRIM(I_PW)
;
-- [리턴 메시지 삽입]
O_MSG := 'Y : ' || '정상 로그인 성공' || ' [M_DEBUG : '|| M_DEBUG ||']';
END;
-- [프로시져 종료]
RETURN;
ELSE -- [검색된 데이터가 없는 경우 : 등록되지 않은 로그인 사용자]
-- [디버깅 단계 지정]
M_DEBUG := '3-1-2';
BEGIN
-- [리턴 메시지 삽입]
O_MSG := 'N : ' || '등록된 사용자가 아닙니다. 관리자에게 연락바랍니다.' || ' [M_DEBUG : '|| M_DEBUG ||']';
-- [리턴 테이블]
OPEN O_CURSOR FOR
SELECT '' AS "DATA_TABLE"
FROM DUAL;
END;
-- [프로시져 종료]
RETURN;
END IF;
/*===================================*/
/***************** [예외 발생 처리 수행 부분] ******************/
EXCEPTION
WHEN NO_DATA_FOUND
THEN
BEGIN
-- [리턴 메시지 삽입]
O_MSG := 'N : ' || 'EXCEPTION : NO_DATA_FOUND' || ' [M_DEBUG : '|| M_DEBUG ||']';
-- [리턴 테이블]
OPEN O_CURSOR FOR
SELECT '' AS "DATA_TABLE"
FROM DUAL;
END;
WHEN OTHERS
THEN
BEGIN
-- [리턴 메시지 삽입]
O_MSG := 'N : ' || 'EXCEPTION : OTHERS' || ' [M_DEBUG : '|| M_DEBUG ||']';
-- [리턴 테이블]
OPEN O_CURSOR FOR
SELECT '' AS "DATA_TABLE"
FROM DUAL;
END;
/****************** [프로시저 종료 완료 부분] ******************/
END PRO_MANAGER_LOGIN;
/
/***********************************************************/
[결과 출력]
반응형
'OracleDB' 카테고리의 다른 글
Comments