[오라클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)
);
id NUMBER,
name VARCHAR2(10)
);
INSERT INTO test VALUES (1, '1길동');
INSERT INTO test VALUES (2, '2길동');
COMMIT;
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;
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길동
1 row selected.
ResultSet #2
COUNT(*)
----------
2
----------
2
1 row selected.
SQL> EXEC get_name;
PL/SQL procedure successfully completed.
ResultSet #1
COUNT(*)
----------
2
----------
2
1 row selected.
댓글 없음:
댓글 쓰기