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

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

Barbara Streisand
풀어 주다: 2024-12-30 01:56:08
원래의
969명이 탐색했습니다.

How Can Oracle PL/SQL Stored Procedures Return Multiple Result Sets?

Oracle PL/SQL에서 여러 결과 세트가 있는 저장 프로시저

Oracle PL/SQL에서 여러 결과를 반환하도록 저장 프로시저를 제작할 수 있습니다. 다양한 인수를 기반으로 설정됩니다. 이를 통해 쿼리 유연성이 향상되고 효율적인 데이터 검색이 가능해집니다. 이를 달성하기 위해 컬렉션 유형이라고도 알려진 중첩 테이블 개념이 활용됩니다.

사용자가 제공한 기준에 따라 직원 기록을 동적으로 검색하기 위해 저장 프로시저가 필요한 시나리오를 생각해 보세요. 접근 방법은 다음과 같습니다.

  1. 중첩 테이블 유형 정의: 직원 개체의 결과 집합을 보관할 중첩 테이블 유형을 만듭니다. 이러한 유형은 반환된 데이터를 구조화하기 위한 템플릿 역할을 합니다.
  2. 저장 프로시저 생성: 입력 매개변수를 사용하여 저장 프로시저를 구성하고 정의된 중첩 테이블 유형의 변수를 선언합니다.
  3. 중첩 테이블 채우기: 저장 프로시저 내에서 커서를 사용하여 소스 데이터를 반복하고 중첩 테이블에 직원 개체를 추가합니다. 변수.
  4. 중첩 테이블 반환: 중첩 테이블이 채워지면 저장 프로시저의 결과로 반환합니다.
  5. 일반 SQL에서 호출: 이름을 호출하고 다음과 같은 경우 인수를 전달하면 일반 SQL에서 저장 프로시저를 호출할 수 있습니다. 필요합니다.

다음은 구현 예입니다.

TYPE emp_obj IS OBJECT (empno NUMBER, ename VARCHAR2(10));
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에서 이 저장 프로시저를 실행할 수 있습니다.

SELECT * FROM TABLE(all_emps);
로그인 후 복사

이 쿼리는 다음을 반환합니다. 각 행이 직원 개체를 나타내는 여러 행으로 동적으로 생성된 결과 집합입니다.

위 내용은 Oracle PL/SQL 저장 프로시저가 어떻게 여러 결과 세트를 반환할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿