2013년 9월 21일 토요일

[오라클12C새기능, 오라클12C교육강좌]오라클커서리턴,DBMS_SQL.RETURN_RESULT, REF CURSOR대신 사용 [출처] 오라클자바커뮤니티

[오라클12C새기능, 오라클12C교육강좌]오라클커서리턴,DBMS_SQL.RETURN_RESULT, REF CURSOR대신 사용

오라클12C 이전에는 커서의 값을 다른 App등으로 리턴시켜주기 위해서는 REF CURSOR를 선언하곤 했는데... 오라클12c부터는 DBMS_SQL.RETURN_RESULT를 이용해서 묵시적으로 가능하다, 예제를 참고하자.
 
CREATE TABLE test (
  id           NUMBER,
  name      VARCHAR2(10)
);
 
INSERT INTO test VALUES (1, '1길동');
INSERT INTO test VALUES (2, '2길동');
COMMIT;



CREATE OR REPLACE PROCEDURE get_name (p_id IN NUMBER DEFAULT NULL)
AS
  cursor_1 SYS_REFCURSOR;
  cursor_2 SYS_REFCURSOR;
BEGIN
  IF p_id IS NOT NULL THEN
 
    OPEN cursor_1 FOR
      SELECT name
      FROM   test
      WHERE  id = p_id;
 
      DBMS_SQL.RETURN_RESULT(cursor_1);

  END IF;
  OPEN cursor_2 FOR
    SELECT COUNT(*)
    FROM   test;
 
    DBMS_SQL.RETURN_RESULT(cursor_2);

END;
/

SQL*Plus에서...
 
SQL> EXEC get_name(1);

PL/SQL procedure successfully completed.

ResultSet #1
NAME                   
----------------------
1길동                

1 row selected.
 
ResultSet #2
 
  COUNT(*)
----------
         2
1 row selected.

SQL> EXEC get_name;
 
PL/SQL procedure successfully completed.
 
ResultSet #1
 
  COUNT(*)
----------
         2
1 row selected.

오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  






댓글 없음:

댓글 쓰기