select...into(변수) 문은 프로시저에서 지원하는 구문이다. 단점은 한 개 로우만 처리가능하다는 것이다.
[프로시저 예시]
in, out 파라미터가 있는 프로시저
CREATE OR REPLACE procedure BANK.proc_login(p_id in varchar2, p_pw in varchar2 ,result out number, msg out varchar2) IS BEGIN SELECT nvl((select 1 from dual WHERE exists (SELECT mem_name FROM member WHERE mem_id=p_id)),-1) INTO result FROM dual; IF result = 1 then SELECT nvl((SELECT mem_name FROM member WHERE mem_id = p_id AND mem_pw = p_pw),'비밀번호가 일치하지 않습니다.') INTO msg FROM dual; ELSE msg:='아이디가 존재하지 않습니다.'; END IF; END;
실행할때
VARIABLE result NUMBER; VARIABLE msg VARCHAR2; //변수 타입을 정해주고 EXEC proc_login('star1','1234',:result, :msg); PRINT msg;
예시
CREATE OR REPLACE procedure SCOTT.proc_deptList(p_rc out sys_refcursor) IS BEGIN OPEN p_rc FOR SELECT deptno, dname FROM dept; END;
실행할때
VARIABLE p_rc REFCURSOR; EXEC proc_deptList(:p_rc);
실행결과