CREATE OR REPLACE procedure SCOTT.proc_login1(p_id in varchar2, p_pw in varchar2, r_msg out varchar2)
is
status varchar2(100):= 2;
begin
-- 1이면 아이디와 비번이모두 일치, -1이면 아이디가 존재하지 않음, 0이면 비번이 틀립니다.
-- 아이디가 존재하면 0을 반환. 비번도 일치하면 1을 반환
select nvl((select m_id from member1 where m_id=p_id),'-1') into status
from dual;
if status = -1 then
r_msg := '아이디가 존재하지 않습니다.';
else -- 아이디가 조회된경우
select nvl((select m_name from member1
where m_id=p_id
and m_pw=p_pw), '비번이 틀립니다.') into r_msg
from dual;
end if;
end;
/
실행방법
SQL> variable r_msg varchar2(300);
SQL> exec proc_login1('kiwi','111',:r_msg);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> print rmsg;
SP2-0552: 바인드 변수 "RMSG" 가 정의되지 않았습니다.
SQL> print r_msg;
R_MSG
--------------------------------------------------------------------------------
1
2:25
SQL> exec proc_login1('kiwi','123',:r_msg);
PL/SQL 처리가 정상적으로 완료되었습니다.
SQL> print r_msg;
R_MSG
--------------------------------------------------------------------------------
비번이 틀립니다