2014년 2월 26일 수요일

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

[오라클12C새기능]커서리턴,DBMS_SQL.RETURN_RESULT, REF CURSOR대신 사용, 구로가산오라클교육,오라클SQL 교육,SQL강좌강의
 
오라클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.
 

댓글 없음:

댓글 쓰기