본문 바로가기

오라클

프로시져의 SYS_REFCURSOR 예제

select_Insa 프로시져

CREATE OR REPLACE PROCEDURE select_Insa
(
   pResult OUT SYS_REFCURSOR -- 파라미터가 OUT이라 해당값을 불러온 놈에게 돌려준다 => list_Insa 프로시져의  실행문 select_Insa(vResult,pcity);

  ,pcity IN insa.city%TYPE
)
IS
BEGIN
  OPEN pResult FOR SELECT name, city FROM insa WHERE city=pcity;
END;
/

 

list_Insa 프로시져

CREATE OR REPLACE PROCEDURE list_Insa
( -- 실행자에 의해서 받아올 인수( 파라미터가 IN이면 해당 프로시져안에서 소화한다, OUT이면 불러온 실행문에 값을 돌려준다)
  pcity  IN insa.city%TYPE
)
IS -- 실행문에서 사용될 변수
  vResult SYS_REFCURSOR;
  vname  insa.name%TYPE;
  vcity insa.city%TYPE;
BEGIN
  select_Insa(vResult,pcity); -- 이 문장이  select_Insa 테이블에 값을 넘겨준다.
  LOOP
    FETCH vResult INTO vname, vcity;
    EXIT WHEN vResult%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(vname || '   ' || vcity);
  END LOOP;
END;
/

 

'오라클' 카테고리의 다른 글

오라클 VIEW 뷰  (0) 2013.06.06
상관하위부 질의  (0) 2013.06.06
프로시져(Stored Procedure)  (0) 2013.06.04
PL/SQL  (0) 2013.06.04
트랜잭션  (0) 2013.06.04