패키지/프로시저 외부에서 Oracle 연관 배열 유형을 생성할 수 있습니까?
Oracle Database 10g에서 패키지 또는 프로시저 외부에 연관 배열 유형을 생성할 수 있습니까?이 연관 배열 유형을 다른 유형으로 참조할 수 있도록 이 작업을 수행할 수 있으면 좋겠습니다.예를 들어,
create type my_type_map is table of varchar2(10) index by varchar2(10);
create type my_other_type as object (
id number(15),
member procedure initialize(p_my_type_map my_type_map)
) not instantiable not final;
오류는 다음과 같습니다.
SQL> create type my_type_map is table of varchar2(20) index by varchar2(10);
2 /
Warning: Type created with compilation errors.
SQL> show errors;
Errors for TYPE MY_TYPE_MAP:
LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0 PL/SQL: Compilation unit analysis terminated
1/21 PLS-00355: use of pl/sql table not allowed in this context
SQL>
Oracle에서 고려하는 사항은 다음과 같습니다.
index by varchar2(10)
PL/SQL이 될 것이며 SQL 유형을 생성하는 데 허용되지 않습니다.Oracle이 패키지 외부에서 연관 어레이를 정의하는 것을 허용하지 않는 경우 좋은 대안이 있습니까?패키지 내에서 Oracle Object를 확장하여 모든 유형을 동일한 패키지에 정의할 수 있는 유형을 생성할 수 있습니까?
고마워요, 제프
편집: 코드 샘플 수정, 로그 추가, 질문으로 가능한 대안 추가
대답은 아니오입니다. Boolean(부울) 유형 변수를 개체에 추가하는 유형을 만드는 것 이상으로 수행하려는 작업을 수행할 수 없습니다.개체의 항목에는 PL/SQL 유형이 아닌 Oracle 유형이 포함되어야 합니다.약간 투박한 대안은 다음과 같습니다.
CREATE TYPE t_aa AS VARRAY(10) OF VARCHAR2(10);
CREATE OR REPLACE TYPE t_ua AS OBJECT (ID NUMBER(15)
, MEMBER PROCEDURE initialize(p_aa t_aa)
, MEMBER PROCEDURE initialize(p_aa_i t_aa))
NOT INSTANTIABLE NOT FINAL;
두 개의 VARRAY에 관련 변수 쌍을 저장합니다.가능한 최대 크기의 어레이를 알아야 합니다.
오류에서 알 수 있듯이 PL/SQL 유형입니다.패키지의 공개 사양에서 이를 선언하는 것을 막을 수 없습니다. 그러면 필요한 PL/SQL 코드에서 이를 참조할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1066476/is-it-possible-to-create-oracle-associative-array-type-outside-of-a-package-proc
'programing' 카테고리의 다른 글
| 점선 테두리 점 사이의 간격을 늘리는 방법 (0) | 2023.10.21 |
|---|---|
| 삽입 시 외국 키 테이블에 고유 레코드 삽입 (0) | 2023.10.21 |
| SQL: 트리거 및 프로시저 (0) | 2023.10.21 |
| 스트레이트 C 프로그램에서 오류 처리에 좋은 숙어가 있습니까? (0) | 2023.10.21 |
| 엔티티 프레임워크 6 무료 오라클 데이터 프로바이더 (0) | 2023.10.21 |