programing

ORACLE 11g의 테이블 값 함수 ? (파라미터화된 보기)

i4 2023. 7. 30. 17:04
반응형

ORACLE 11g의 테이블 값 함수 ? (파라미터화된 보기)

저는 과거에 여기와 같이 이것에 대한 논의를 본 적이 있습니다.하지만 Oracle은 모든 종류의 사용자 정의 유형 및/또는 커서 정의 또는 sys_context 변수를 데이터베이스에 모두 배치할 필요 없이 "파라미터화된 보기"를 더 잘 지원하는지 궁금합니다.

저는 T-SQL의 다음 예시와 같이 단순히 "그냥 작동하는" 것에 대한 오라클의 추가 지원이 있기를 바랍니다.

CREATE FUNCTION [dbo].[getSomeData] (@PRODID ROWID)  
RETURNS TABLE AS  
    RETURN SELECT PRODID, A, B, C, D, E  
    FROM MY_TABLE  
    WHERE PRODID = @PRODID

다음과 같이 선택합니다.

SELECT * FROM dbo.getSomeData(23)

SYS_CONTEXT 또는 커서 정의가 필요하지 않습니다.SQL을 구문 분석할 때 반환할 열을 결정할 수 있도록 유형이 필요합니다.즉, user_tab_columns의 데이터를 기반으로 하나 이상의 테이블에 대한 유형 및 컬렉션 유형 정의를 생성하는 스크립트를 쉽게 작성할 수 있습니다.

가장 가까운 것은

create table my_table
(prodid number, a varchar2(1), b varchar2(1), 
  c varchar2(1), d varchar2(1), e varchar2(1));

create type my_tab_type is object
(prodid number, a varchar2(1), b varchar2(1), 
  c varchar2(1), d varchar2(1), e varchar2(1))
.
/

create type my_tab_type_coll is table of my_tab_type;
/

create or replace function get_some_data (p_val in number) 
return my_tab_type_coll pipelined is
begin
  FOR i in (select * from my_table where prodid=p_val) loop
    pipe row(my_tab_type(i.prodid,i.a,i.b,i.c,i.d,i.e));
  end loop;
  return;
end;
/

SELECT * FROM table(get_Some_Data(3));

Oracle에서 일종의 "매개 변수화된" 보기를 정의할 수 있습니다.단계는 다음과 같습니다.

  1. 실제로 필요한 매개변수인 공개 구성원을 포함하는 패키지를 정의합니다(해당 패키지의 기능이나 절차가 필요하지 않음).
  2. 해당 패키지 구성원을 기반으로 하는 보기를 정의합니다.

이 메커니즘을 사용하려면 한 명의 사용자가 다음을 수행해야 합니다.

  1. 세션 열기,
  2. 패키지 구성원에게 원하는 값을 할당합니다.
  3. SELECT뷰의 데이터,
  4. 다른 작업을 수행하거나 세션을 닫습니다.

비고: 패키지 구성원 범위는 정확히 세션이므로 사용자는 한 세션에서만 세 단계를 모두 수행해야 합니다.

SQL SERVER에는 두 가지 유형의 테이블 값 함수가 있습니다.

  1. 인라인 테이블 값 함수:인라인 테이블 값 함수의 경우 함수 본문이 없습니다. 테이블은 단일의 결과 집합입니다.SELECT진술.이 유형은 '매개 변수화된 보기'로 명명할 수 있으며 ORACLE에는 해당되지 않는 것으로 알고 있습니다.

  2. 다중 문 테이블 값 함수:다중 문 테이블 값 함수의 경우, 함수 본체는 다음과 같이 정의됩니다.BEGIN...ENDblock - 테이블에 행을 빌드하고 삽입하는 일련의 Transact-SQL 문을 포함합니다.

위의 샘플(Gary Myers 기준)은 두 번째 유형의 테이블 함수를 생성하며 '매개 변수화된 뷰'가 아닙니다.

언급URL : https://stackoverflow.com/questions/2059299/table-valued-functions-in-oracle-11g-parameterized-views

반응형