>데이터 베이스 >MySQL 튜토리얼 >Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 어떻게 반환할 수 있습니까?

Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 어떻게 반환할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-28 02:27:10865검색

How Can I Return Multiple Result Sets from an Oracle PL/SQL Stored Procedure?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.