sys_refcursor

이진아·2020년 3월 17일
1

1. 프로시저(procedure)

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;

2. out 파라미터로 sys_refcursor 사용

  • 예시

    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);
  • 실행결과

0개의 댓글