SnowConvert AI - Oracle - 사용자 정의 유형¶
설명¶
사용자 정의 데이터 타입은 애플리케이션에서 데이터의 구조와 동작을 모델링하는 오브젝트 타입의 빌딩 블록으로 Oracle 내장 데이터 타입 및 기타 사용자 정의 데이터 타입을 사용합니다. 다음 섹션에서는 사용자 정의 유형의 다양한 범주에 대해 설명합니다. (Oracle SQL Language Reference 사용자 정의 데이터 타입)
경고
Snowflake는 사용자 정의 유형을 지원하지 않습니다. 이 페이지에서는 Oracle의 기능을 요약하여 제공합니다. SnowConvert AI 도구에서 사용자 정의 유형의 현재 상태를 확인하려면 Create Type 문 페이지 및 해당 하위 페이지를 참조하세요.
오브젝트 타입¶
참고
SnowConvert AI는 오브젝트 유형에 대한 부분 변환을 제공합니다. 이에 대한 자세한 내용은 오브젝트 유형 정의 섹션을 참조하세요.
REF 데이터 타입¶
위험
참조 데이터 타입은 SnowConvert AI에서 인식되지 않으면 인식되지 않는 “사용자 정의 함수”로 대신 표시됩니다. 이에 대한 자세한 내용은 REF 데이터 타입 하위 페이지를 확인하세요.
오브젝트 식별자(
OID키워드로 표시됨)는 오브젝트를 고유하게 식별하고 다른 오브젝트나 관계형 테이블에서 오브젝트를 참조할 수 있게 해줍니다.REF이라는 데이터 타입 카테고리는 이러한 참조를 나타냅니다.REF데이터 타입은 오브젝트 식별자를 위한 컨테이너입니다.REF값은 오브젝트에 대한 포인터입니다. (Oracle SQL Language Reference REF 데이터 타입)
Varrays¶
경고
SnowConvert AI는 해당 요소를 인식만 할 뿐 변환은 제공하지 않습니다. 이에 대한 자세한 내용은 배열 유형 정의 섹션을 참조하세요.
중첩된 테이블¶
경고
SnowConvert AI는 해당 요소를 인식만 할 뿐 이에 대해 알려진 해결 방법이 없으므로 변환은 제공하지 않습니다. 이에 대한 자세한 내용은 중첩 테이블 유형 정의 섹션을 참조하세요.
Known Issues¶
1. DML usages for Object Types are not being transformed¶
현재로서는 사용자 정의 유형을 사용하는 DDL 정의만 베리언트로 변환되고 있습니다. 즉, 사용자 정의 유형을 사용하는 모든 삽입, 업데이트 또는 삭제는 변환되지 않으며 수동으로 변환해야 합니다. 이에 대한 EWI 는 없지만 이에 해당하는 EWI 를 추가하는 작업 항목이 있습니다.
2. Nested Table types are not being transformed¶
중첩 테이블 구현에 대해 알려진 해결 방법이 없으므로 SnowConvert AI는 해당 요소를 인식하기만 합니다.
3. Array types are not being transformed¶
현재 SnowConvert AI는 해당 요소를 인식하기만 합니다. 알려진 해결 방법이 있으며 이를 구현하기 위한 작업 항목이 있습니다.
REF 데이터 타입¶
참고
출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.
설명¶
오브젝트 식별자(
OID키워드로 표시됨)는 오브젝트를 고유하게 식별하고 다른 오브젝트나 관계형 테이블에서 오브젝트를 참조할 수 있게 해줍니다.REF이라는 데이터 타입 카테고리는 이러한 참조를 나타냅니다.REF데이터 타입은 오브젝트 식별자를 위한 컨테이너입니다.REF값은 오브젝트에 대한 포인터입니다. (Oracle SQL Language Reference REF 데이터 타입)
REF 데이터 타입은 Snowflake에서 지원되지 않으며, 현재 유사한 구성 요소를 구현할 수 있는 해결 방법이 없습니다.
현재 이는 사용자 정의 함수로 인식되며 “DANGLING” 절은 인식되지 않습니다. 마지막으로, 뷰의 OID 절은 해결 방법이 없으므로 제거됩니다.
CREATE VIEW generic_view AS
SELECT REF(type) AS ref_col, MAKE_REF(type, identifier_column) AS make_ref_col
FROM generic_table;
SELECT v.ref_col, v.make_ref_col
FROM generic_view v
WHERE v.ref_col IS NOT DANGLING AND v.make_ref_col IS NOT DANGLING
샘플 소스 패턴¶
참조용 유형 및 테이블¶
다음 유형, 테이블, 인서트 및 뷰를 고려하십시오. 다음 패턴 섹션에 사용됩니다.
Oracle¶
CREATE TYPE email_typ_demo AS OBJECT
( email_id INTEGER
, email VARCHAR2(30)
);
CREATE TYPE customer_typ_demo AS OBJECT
( customer_id INTEGER
, cust_first_name VARCHAR2(20)
, cust_last_name VARCHAR2(20)
, email_id INTEGER
) ;
CREATE TABLE email_table_demo OF email_typ_demo;
CREATE TABLE customer_table_demo OF customer_typ_demo;
INSERT INTO customer_table_demo VALUES
(customer_typ_demo(1, 'First Name 1', 'Last Name 1', 1));
INSERT INTO customer_table_demo VALUES
(customer_typ_demo(2, 'First Name 2', 'Last Name 2', 2));
INSERT INTO email_table_demo VALUES
(email_typ_demo(1, 'abc@def.com'));
CREATE VIEW email_object_view OF email_typ_demo WITH OBJECT IDENTIFIER (email_id) AS
SELECT * FROM email_table_demo;
REFs 를 사용한 선택 및 보기¶
Oracle¶
CREATE VIEW email_object_view OF email_typ_demo WITH OBJECT IDENTIFIER (email_id) AS
SELECT * FROM email_table_demo;
CREATE VIEW customer_view AS
SELECT REF(ctb) AS customer_reference
, MAKE_REF(email_object_view, ctb.email_id) AS email_ref
FROM customer_table_demo ctb;
SELECT c.customer_reference.cust_first_name, c.email_ref.email
FROM customer_view c;
SELECT c.customer_reference.cust_first_name, c.email_ref.email
FROM customer_view c
WHERE c.email_ref IS NOT DANGLING;
허상이 있는 결과¶
CUSTOMER_REFERENCE.CUST_FIRST_NAME |
EMAIL_REF.EMAIL |
|---|---|
이름 1 |
abc@def.com |
이름 2 |
허상이 없는 결과¶
CUSTOMER_REFERENCE.CUST_FIRST_NAME |
EMAIL_REF.EMAIL |
|---|---|
이름 1 |
abc@def.com |
Snowflake¶
CREATE OR REPLACE VIEW email_object_view
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
AS
--** SSC-FDM-0001 - VIEWS SELECTING ALL COLUMNS FROM A SINGLE TABLE ARE NOT REQUIRED IN SNOWFLAKE AND MAY IMPACT PERFORMANCE. **
SELECT * FROM
email_table_demo;
CREATE OR REPLACE VIEW customer_view
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
AS
SELECT REF(ctb) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'REF' NODE ***/!!! AS customer_reference
, MAKE_REF(email_object_view, ctb.email_id) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'MAKE_REF' NODE ***/!!! AS email_ref
FROM
customer_table_demo ctb;
SELECT c.customer_reference.cust_first_name, c.email_ref.email
FROM
customer_view c;
SELECT c.customer_reference.cust_first_name, c.email_ref.email
FROM
customer_view c
WHERE c.email_ref;
-- ** SSC-EWI-0001 - UNRECOGNIZED TOKEN ON LINE '14' COLUMN '19' OF THE SOURCE CODE STARTING AT 'IS'. EXPECTED 'STATEMENT' GRAMMAR. LAST MATCHING TOKEN WAS ';' ON LINE '10' COLUMN '21'. FAILED TOKEN WAS 'IS' ON LINE '14' COLUMN '19'. CODE '94'. **
-- IS NOT DANGLING
Known Issues¶
1. REF 및 MAKE_REF 이 인식되지 않습니다
대신 현재 사용자 정의 함수로 표시되고 있습니다.
2. DANGLING 절은 인식되지 않습니다
SnowConvert 를 실행할 때 DANGLING 절에서 구문 분석 오류가 발생합니다.
관련 EWIs¶
SSC-EWI-0001: 소스 코드 줄에 인식할 수 없는 토큰이 있습니다.
SSC-EWI-0073: 기능적 동등성 검토가 보류 중입니다.
SSC-FDM-0001: Snowflake에서는 단일 테이블에서 모든 열을 선택하는 뷰가 필요하지 않습니다.