> 데이터 베이스 > MySQL 튜토리얼 > Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 반환하는 방법은 무엇입니까?

Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 반환하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-29 04:40:09
원래의
165명이 탐색했습니다.

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

Oracle PL/SQL 저장 프로시저를 사용하여 여러 결과 세트 반환

질문:

저장 프로시저를 어떻게 생성할 수 있나요? 전달된 인수를 기반으로 다양한 데이터 세트를 검색한 후 일반에서 호출합니다. SQL?

답변:

Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 반환하려면 다음 접근 방식을 사용할 수 있습니다.

  1. 객체 및 테이블 유형 생성:

    먼저, 객체와 테이블 유형을 정의하여 결과 세트의 데이터 구조. 이 예에서는 empno(숫자)와 ename(varchar2)이라는 두 가지 속성을 가진 emp_obj 객체 유형을 생성합니다. 그런 다음 emp_obj 객체의 컬렉션으로 emp_tab 테이블 유형을 생성합니다.

  2. 저장 프로시저 구축:

    함수(all_emps in 이 경우) emp_tab 컬렉션을 반환합니다. 함수 내부:

    • 빈 emp_tab 변수를 초기화합니다.
    • 루프를 수행하여 원하는 행을 반복합니다(이 예에서는 emp 테이블에서 empno 및 ename 검색).
    • emp_tab 컬렉션을 확장하고 각 행의 값을 emp_obj에 할당합니다. 인스턴스.
    • 채워진 emp_tab 컬렉션을 반환합니다.
  3. SQL에서 저장 프로시저를 호출합니다.

    호출하려면 SQL의 all_emps 함수에서는 테이블 연산자를 사용합니다. 이를 통해 반환된 컬렉션을 일반 테이블로 쿼리할 수 있습니다.

예:

SQL> create type emp_obj is object (empno number, ename varchar2(10));

SQL> create type emp_tab is table of emp_obj;

SQL> 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);
로그인 후 복사

결과:

     EMPNO ENAME
---------- ----------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7902 FORD
      7934 MILLER
로그인 후 복사

위 내용은 Oracle PL/SQL 저장 프로시저에서 여러 결과 세트를 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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