programing

데이터 유형의 테이블 열을 참조하는 오라클 유형을 만들려면 어떻게 해야 합니까?

i4 2023. 8. 9. 20:29
반응형

데이터 유형의 테이블 열을 참조하는 오라클 유형을 만들려면 어떻게 해야 합니까?

나는 정의하려고 합니다.type다음 코드를 사용합니다.

CREATE OR REPLACE TYPE MY_TYPE AS OBJECT (
    app_id        some_table_name.app_id%type
);

이걸 실행하면 오류가 발생합니다.

Error(4,32): PLS-00201: identifier 'some_table_name.app_id' must be declared

이게 뭐가 문제야?

그게 뭐가 문제야?%typePL/SQL 구문입니다.SQL에서는 지원되지 않습니다.이제 PL/SQL을 사용하여 유형(특히 멤버 함수, 생성자 등)을 정의하지만 유형 자체는 SQL 개체이므로 SQL 규칙을 따릅니다.즉, 명시적 데이터 유형을 사용하여 유형 특성을 선언해야 합니다.

저는 그것이 유감이라는 것에 동의하며, 만약 우리가 이와 같은 형식 선언에서 표 열을 참조할 수 있다면 정말 깔끔할 것입니다.안타깝게도 Oracle은 지난 몇 가지 버전에서 TYPE 구현에 대한 변경사항을 실제로 지연시켰기 때문에 가까운 시일 내에 변경될 가능성은 거의 없다고 생각합니다.

Oracle은 이 구문을 지원합니다.

CREATE OR REPLACE TYPE MY_TYPE AS OBJECT 
      (     one_row        some_table_name.%rowtype ); 

인터페이스를 위한 동적 객체: 얼마나 멋질까요?

사용할 수 없습니다.some_table_name.app_id%type데이터베이스에 유형을 선언할 때 다음과 같은 작업을 수행할 수 있습니다.

create table emp (empno number,
                  deptno dept.deptnp%type, -- NOT ALLOWED
                 );

NUMBER, VARCHAR2(10)와 같은 기본 제공 유형 또는 다음과 같은 사용자 정의 유형을 사용해야 합니다.mytype

언급URL : https://stackoverflow.com/questions/9634535/how-do-i-create-oracle-type-which-refers-to-table-columns-for-data-type

반응형