SnowConvert AI - Oracle - Any 유형

설명

Any 유형은 실제 유형을 알 수 없는 프로시저 매개 변수와 테이블 열의 매우 유연한 모델링을 제공합니다. 이러한 데이터 타입을 사용하면 다른 모든 SQL 타입의 타입 설명, 데이터 인스턴스, 데이터 인스턴스 세트를 동적으로 캡슐화하고 액세스할 수 있습니다.(Oracle SQL 언어 참조 ANYTYPES 데이터 타입)

ANYDATA

설명

이 타입은 데이터와 함께 주어진 타입의 인스턴스와 타입에 대한 설명을 포함합니다. ANYDATA 는 테이블 열 데이터 타입으로 사용할 수 있으며, 단일 열에 이종 값을 저장할 수 있습니다. 값은 SQL 기본 제공 유형과 사용자 정의 유형이 될 수 있습니다. (Oracle SQL Language Reference ANYDATA 데이터 타입) .

ANYDATA 데이터 타입은 Snowflake에서 지원되지 않습니다.

{ SYS.ANYDATA | ANYDATA }

샘플 소스 패턴

ANYDATA 를 사용하여 테이블 만들기

Oracle
CREATE TABLE anydatatable
(
    col1 NUMBER,
    col2 ANYDATA,
    col3 SYS.ANYDATA
);
Snowflake
CREATE OR REPLACE TABLE anydatatable
    (
        col1 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
        col2 VARIANT,
        col3 VARIANT
    )
    COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
    ;

ANYDATA 열에 데이터 삽입하기

Oracle
INSERT INTO anydatatable VALUES(
	555,
	ANYDATA.ConvertVarchar('Another Test Text')
);
Snowflake
INSERT INTO anydatatable
VALUES(
	555,
	ANYDATA.ConvertVarchar('Another Test Text') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertVarchar' NODE ***/!!!
);

함수 예제

경고

이 예는 SnowConvert AI의 변환이 아니며, Oracle ANYDATA과 Snowflake VARIANT 간의 기능적 동등성을 보여주는 데만 사용됩니다.

경고

ANYDATA 내장 패키지를 사용 중입니다. 이 패키지의 변환은 현재 SnowConvert 에서 지원하지 않습니다.

Oracle
--Create Table
CREATE TABLE anydatatable_example 
(
	col1 ANYDATA,
	col2 ANYDATA,
	col3 ANYDATA,
	col4 ANYDATA,
	col5 ANYDATA
);

--Insert data
INSERT INTO anydatatable_example VALUES(
	ANYDATA.ConvertNumber(123),
	ANYDATA.ConvertVarchar('Test Text'),
	ANYDATA.ConvertBFloat(3.14f), 
	ANYDATA.ConvertDate(CURRENT_DATE),
	ANYDATA.ConvertTimestamp(CURRENT_TIMESTAMP)
);

--Retrieve information
SELECT
	ANYDATA.AccessNumber(col1) AS col1,
	ANYDATA.AccessVarchar(col2) AS col2,
	ANYDATA.AccessBFloat(col3) AS col3,
	ANYDATA.AccessDate(col4) AS col4,
	ANYDATA.AccessTimestamp(col5) AS col5
FROM anydatatable_example;
결과

COL1

COL2

COL3

COL4

COL5

123

테스트 텍스트

3.14

2021-12-05 18:24:59.000

2021-12-05 18:24:59.100

Snowflake
--Create Table
CREATE OR REPLACE TABLE anydatatable_example
	(
		col1 VARIANT,
		col2 VARIANT,
		col3 VARIANT,
		col4 VARIANT,
		col5 VARIANT
	)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},{"attributes":{"component":"oracle"}}'
;

--Insert data
INSERT INTO anydatatable_example
VALUES(
	ANYDATA.ConvertNumber(123) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertNumber' NODE ***/!!!,
	ANYDATA.ConvertVarchar('Test Text') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertVarchar' NODE ***/!!!,
	ANYDATA.ConvertBFloat(3.14) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertBFloat' NODE ***/!!!,
	ANYDATA.ConvertDate(CURRENT_DATE()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertDate' NODE ***/!!!,
	ANYDATA.ConvertTimestamp(CURRENT_TIMESTAMP()) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.ConvertTimestamp' NODE ***/!!!
);

--Retrieve information
SELECT
	ANYDATA.AccessNumber(col1) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessNumber' NODE ***/!!! AS col1,
	ANYDATA.AccessVarchar(col2) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessVarchar' NODE ***/!!! AS col2,
	ANYDATA.AccessBFloat(col3) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessBFloat' NODE ***/!!! AS col3,
	ANYDATA.AccessDate(col4) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessDate' NODE ***/!!! AS col4,
	ANYDATA.AccessTimestamp(col5) !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'ANYDATA.AccessTimestamp' NODE ***/!!! AS col5
FROM
	anydatatable_example;
결과

COL1

COL2

COL3

COL4

COL5

123

“테스트 텍스트”

3.14

“2021-12-05”

“2021-12-05 18:24:43.326 -0800”

Known Issues

1. No access to the ANYDATA built-in package

ANYDATA 열이 있는 대부분의 작업에는 ANYDATA 기본 제공 패키지를 사용해야 하며, Oracle 기본 제공 패키지에 대한 변환은 아직 SnowConvertAI에서 지원되지 않습니다.

ANYDATASET

참고

출력 코드의 일부 부분은 명확성을 위해 생략되었습니다.

설명

이 타입은 주어진 타입에 대한 설명과 해당 타입의 데이터 인스턴스 세트를 포함합니다. ANYDATASET 은 이러한 유연성이 필요한 경우 프로시저 매개 변수 데이터 타입으로 사용할 수 있습니다. 데이터 인스턴스의 값은 SQL 기본 제공 유형과 사용자 정의 유형이 될 수 있습니다. (Oracle SQL Language Reference ANYDATASET 데이터 타입).

ANYDATASET 데이터 타입은 Snowflake에서 지원되지 않습니다. 이 데이터 타입에 대한 가능한 해결 방법으로 Snowflake ARRAY 를 사용할 수 있지만, 현재 SnowConvert 는 해당 변환을 지원하지 않습니다.

{ SYS.ANYDATASET | ANYDATASET }

샘플 소스 패턴

ANYDATASET 를 사용하여 테이블 만들기

Oracle
CREATE TABLE anydatasettable
(
	col1 NUMBER,
	col2 ANYDATASET,
	col3 SYS.ANYDATASET
);
Snowflake
CREATE OR REPLACE TABLE anydatasettable
	(
		col1 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col2 ANYDATASET,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col3 SYS.ANYDATASET
	)
	COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
	;

ANYDATASET 열에 데이터 삽입하기

Oracle
DECLARE
    anytype_example    ANYTYPE;
    anydataset_example ANYDATASET;
BEGIN
    ANYDATASET.BEGINCREATE(DBMS_TYPES.TYPECODE_VARCHAR2, anytype_example, anydataset_example);

    anydataset_example.ADDINSTANCE;
    anydataset_example.SETVARCHAR2('First element');
   
    anydataset_example.ADDINSTANCE;
    anydataset_example.SETVARCHAR2('Second element');
   
    ANYDATASET.ENDCREATE(anydataset_example);

    INSERT INTO anydatasettable VALUES (123, anydataset_example);
END;
Snowflake
DECLARE
    !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
    anytype_example    ANYTYPE;
    !!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
    anydataset_example ANYDATASET;
BEGIN
    CALL
    ANYDATASET.BEGINCREATE(
    !!!RESOLVE EWI!!! /*** SSC-EWI-OR0076 - TRANSLATION FOR BUILT-IN PACKAGE 'DBMS_TYPES.TYPECODE_VARCHAR2' IS NOT CURRENTLY SUPPORTED. ***/!!!
    '' AS TYPECODE_VARCHAR2, :anytype_example, :anydataset_example);
    CALL

    anydataset_example.ADDINSTANCE();
    CALL
    anydataset_example.SETVARCHAR2('First element');
    CALL

    anydataset_example.ADDINSTANCE();
    CALL
    anydataset_example.SETVARCHAR2('Second element');
    CALL

    ANYDATASET.ENDCREATE(:anydataset_example);

    INSERT INTO anydatasettable
    VALUES (123, :anydataset_example);
END;

Known Issues

1. Inserts are being parsed incorrectly

ANYDATASET 오브젝트를 만들고 삽입하는 데 필요한 일부 함수가 SnowConvert 에서 올바르게 구문 분석되지 않습니다.

1. No access to the ANYDATASET built-in package

ANYDATASET 열이 있는 대부분의 작업에는 ANYDATASET 기본 제공 패키지를 사용해야 하며, Oracle 기본 제공 패키지에 대한 변환은 아직 SnowConvertAI에서 지원되지 않습니다.

관련 EWIs

  1. SSC-EWI-OR0076: 기본 제공 패키지는 지원되지 않습니다.

  2. SSC-FDM-0006: 숫자 유형 열이 Snowflake에서 유사하게 동작하지 않을 수 있음

  3. SSC-EWI-0028: 유형은 Snowflake에서 지원되지 않습니다.

ANYTYPE

설명

이 유형에는 명명된 SQL 유형 또는 명명되지 않은 일시적 유형에 대한 유형 설명이 포함될 수 있습니다. (Oracle SQL Language Reference ANYTYPE 데이터 타입).

ANYTYPE 데이터 타입은 Snowflake에서 지원되지 않습니다.

{ SYS.ANYTYPE | ANYTYPE }

샘플 소스 패턴

ANYTYPE 을 사용하여 테이블 만들기

Oracle
CREATE TABLE anytypetable 
(
	col1 NUMBER,
	col2 ANYTYPE,
	col3 SYS.ANYTYPE
);
Snowflake
CREATE OR REPLACE TABLE anytypetable
	(
		col1 NUMBER(38, 18) /*** SSC-FDM-0006 - NUMBER TYPE COLUMN MAY NOT BEHAVE SIMILARLY IN SNOWFLAKE. ***/,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col2 ANYTYPE,
	!!!RESOLVE EWI!!! /*** SSC-EWI-0028 - TYPE NOT SUPPORTED BY SNOWFLAKE ***/!!!
		col3 SYS.ANYTYPE
	)
	COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"oracle"}}'
	;

ANYTYPE 열에 데이터 삽입하기

Oracle
--Create Custom Type
CREATE OR REPLACE TYPE example_type AS OBJECT (id NUMBER, name VARCHAR(20));

--Insert
INSERT INTO anytypetable VALUES(
    123,
    GETANYTYPEFROMPERSISTENT ('HR', 'EXAMPLE_TYPE')
);
Snowflake
--Create Custom Type
!!!RESOLVE EWI!!! /*** SSC-EWI-0056 - CUSTOM TYPES ARE NOT SUPPORTED IN SNOWFLAKE BUT REFERENCES TO THIS CUSTOM TYPE WERE CHANGED TO VARIANT ***/!!!
CREATE OR REPLACE TYPE example_type AS OBJECT (id NUMBER, name VARCHAR(20))
;

--Insert
INSERT INTO anytypetable
VALUES(
    123,
    GETANYTYPEFROMPERSISTENT ('HR', 'EXAMPLE_TYPE') !!!RESOLVE EWI!!! /*** SSC-EWI-0073 - PENDING FUNCTIONAL EQUIVALENCE REVIEW FOR 'GETANYTYPEFROMPERSISTENT' NODE ***/!!!
);

Known Issues

1. No access to the ANYTYPE built-in package

ANYDATA 열이 있는 대부분의 작업에는 ANYTYPE 기본 제공 패키지를 사용해야 하며, Oracle 기본 제공 패키지에 대한 변환은 아직 SnowConvertAI에서 지원되지 않습니다.

관련 EWIs

  1. SSC-EWI-0056: 생성 유형은 지원되지 않습니다.

  2. SSC-EWI-0073: 기능적 동등성 검토가 보류 중입니다.

  3. SSC-EWI-0028: 유형은 Snowflake에서 지원되지 않습니다.

  4. SSC-FDM-0006: 숫자 유형 열이 Snowflake에서 유사하게 동작하지 않을 수 있습니다.