Oracle PL/SQL에서 여러 결과 세트 반환
입력에 따라 여러 결과 세트를 동적으로 반환하는 저장 프로시저를 생성해야 할 필요성을 고려하세요. 인수. Oracle PL/SQL에서 이를 달성하는 방법은 다음과 같습니다.
저장 프로시저 구축
여러 결과 집합을 반환하려면 먼저 각 결과 집합의 데이터를 나타내는 개체 유형을 생성합니다. 결과 집합. 예를 들어 직원 데이터를 반환하려면
CREATE TYPE EMP_OBJ IS OBJECT (EMPNO NUMBER, ENAME VARCHAR2(10));
다음으로 이러한 개체의 컬렉션을 저장하는 테이블 유형을 만듭니다.
CREATE TYPE EMP_TAB IS TABLE OF EMP_OBJ;
이제 저장 프로시저를 만듭니다. 다음은 배열에 개체를 할당하고 이를 반환하는 예입니다.
CREATE OR REPLACE FUNCTION ALL_EMPS RETURN EMP_TAB IS L_EMP_TAB EMP_TAB := EMP_TAB(); N INTEGER := 0; BEGIN FOR R IN (SELECT EMPNO, ENAME FROM EMP) LOOP L_EMP_TAB.EXTEND; N := N + 1; L_EMP_TAB(N) := EMP_OBJ(R.EMPNO, R.ENAME); END LOOP; RETURN L_EMP_TAB; END;
일반 SQL에서 호출
저장 프로시저가 생성되면 다음에서 호출할 수 있습니다. TABLE() 생성자를 사용하는 일반 SQL:
SELECT * FROM TABLE (ALL_EMPS);
이 쿼리는 모든 직원을 단일 결과로 반환합니다. table.
예
다음 저장 프로시저를 고려하세요.
CREATE OR REPLACE PROCEDURE GET_EMPLOYEES ( DEPT INTEGER, OUT RECORDS OUT SYS_REFCURSOR ) IS ... END;
이 프로시저를 호출하고 커서를 사용하여 반환된 레코드에 액세스할 수 있습니다.
DECLARE EMP_CUR SYS_REFCURSOR; BEGIN GET_EMPLOYEES(10, EMP_CUR); LOOP FETCH EMP_CUR INTO EMP_OBJ; EXIT WHEN EMP_CUR%NOTFOUND; ... END LOOP; END;
객체 유형, 테이블 유형 및 커서를 사용하면 여러 결과를 효과적으로 반환할 수 있습니다. Oracle PL/SQL 저장 프로시저의 집합입니다. 이는 애플리케이션에서 복잡한 데이터로 작업할 때 유연성과 효율성을 제공합니다.
위 내용은 Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 어떻게 반환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!