sys_refcursor
2024. 9. 9. 02:35ㆍDBMS/PLSQL
반응형
sys_refcursor는 PL/SQL 프로시저나 함수 내에서 결과 집합을 반환하는 데 사용되는 데이터 타입이다. 주로 저장 프로시저나 함수에서 여러 행의 데이터를 반환한다.
sys_refcursor의 주요 사용 목적:
- 다중 행 데이터 반환: 저장 프로시저나 함수가 쿼리 결과를 반환할 때, 여러 행을 반환하는 용도로 사용된다.
- 다른 프로그램과의 연동: sys_refcursor로 반환된 데이터를 다른 프로그램이나 쿼리에서 활용할 수 있어 유연성이 좋다.
- 직원 정보를 저장하는 employees 테이블이 있다고 가정.
- 이 테이블에서 모든 직원을 검색하는 프로시저를 만들고, 그 결과를 sys_refcursor로 반환하여 다른 프로그램에서 사용할 수 있도록 설정
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
salary NUMBER
);
CREATE OR REPLACE PROCEDURE get_all_employees(p_cursor OUT sys_refcursor) IS
BEGIN
-- 모든 직원 정보를 반환하는 쿼리 실행
OPEN p_cursor FOR
SELECT employee_id, first_name, last_name, salary
FROM employees;
END;
/
- p_cursor: 이 인자는 OUT 파라미터로 사용되어 프로시저 외부에서 커서를 참조할 수 있다.
- OPEN p_cursor FOR: sys_refcursor를 열어주고, SELECT 문을 실행하여 그 결과를 반환한다.
DECLARE
emp_cursor sys_refcursor; -- sys_refcursor 변수 선언
emp_id NUMBER;
f_name VARCHAR2(50);
l_name VARCHAR2(50);
sal NUMBER;
BEGIN
-- 프로시저 호출
get_all_employees(emp_cursor);
-- 커서를 사용해 데이터를 출력
LOOP
FETCH emp_cursor INTO emp_id, f_name, l_name, sal;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID: ' || emp_id || ', Name: ' || f_name || ' ' || l_name || ', Salary: ' || sal);
END LOOP;
-- 커서 닫기
CLOSE emp_cursor;
END;
/
반응형
'DBMS > PLSQL' 카테고리의 다른 글
조합 변수(Composite Variables) (0) | 2024.09.09 |
---|---|
WHERE CURRENT OF 절 | 명시적 커서 (0) | 2024.09.08 |
특정 부서 번호를 입력받아 삭제 (1) | 2024.06.03 |
부서 ID의 최대값 조회 및 새로운 부서 ID 생성 (0) | 2024.06.03 |
스키마 테이블 모두 삭제 (0) | 2024.05.30 |