SnowConvert AI - Oracle - 任意の型¶
説明¶
Any型は、実際の型が不明なプロシージャパラメーターやテーブル列を非常に柔軟にモデリングできます。これらのデータ型を使用すると、他の任意の SQL 型の型記述、データインスタンス、データインスタンスセットを動的にカプセル化してアクセスできます。([Oracle SQL 言語リファレンス ANYTYPES データ型](https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html# GUID-5A8C5AC6-BC32-4D78-B0DE-037162106C72))
ANYDATA¶
説明¶
このタイプには、特定のタイプのインスタンス、データ、およびタイプの説明が含まれます。
ANYDATAはテーブル列のデータ型として使用でき、単一の列に異種の値を格納できます。値はユーザー定義タイプだけでなく、 SQL 組み込みタイプも使用できます。(Oracle SQL 言語リファレンス 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 ***/!!!
);
関数例¶
警告
この例は、Oracle ANYDATA とSnowflake VARIANT の機能的同等性を示すために使用されているだけであり、 SnowConvert AI の変換 ではありません 。
警告
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 |
"Test Text" |
3.14 |
"2021-12-05" |
"2021-12-05 18:24:43.326 -0800" |
既知の問題¶
1.ANYDATA 組み込みパッケージにアクセスできません¶
ANYDATA 列を使用したほとんどの操作では ANYDATA 組み込みパッケージを使用する必要がありますが、Oracle組み込みパッケージの変換は SnowConvert AI ではまだサポートされていません。
ANYDATASET¶
注釈
わかりやすくするため、出力コードの一部を省略しています。
説明¶
この型は、与えられた型の説明とその型のデータインスタンスのセットを含んでいます。このような柔軟性が必要な場合には、プロシージャのパラメーターデータ型として
ANYDATASETを使用することができます。データインスタンスの値には、 SQL 組み込みタイプもユーザー定義タイプも使用できます。(Oracle SQL 言語リファレンス 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;
既知の問題¶
1.挿入が正しく解析されません¶
新しい ANYDATASET オブジェクトの作成と挿入に必要ないくつかの関数が、 SnowConvert によって正しく解析されていません。
1.ANYDATASET 組み込みパッケージにアクセスできません¶
ANYDATASET 列を使用したほとんどの操作では ANYDATASET 組み込みパッケージを使用する必要がありますが、Oracle組み込みパッケージの変換は SnowConvert AI ではまだサポートされていません。
関連 EWIs¶
[SSC-EWI-OR0076](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/oracleEWI.md#ssc-ewi-or0076):組み込みパッケージはサポート対象外です。
[SSC-FDM-0006:](../../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM.md#ssc-fdm-0006)数値型の列は、Snowflakeでは同じように動作しない可能性があります
[SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028):Snowflakeでサポートされていない型です。
ANYTYPE¶
説明¶
このタイプには、名前付き SQL タイプまたは名前なしの一時タイプのタイプ記述を含めることができます。(Oracle SQL 言語リファレンス 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 ***/!!!
);
既知の問題¶
1.ANYTYPE 組み込みパッケージにアクセスできません¶
ANYDATA 列を使用したほとんどの操作では ANYTYPE 組み込みパッケージを使用する必要がありますが、Oracle組み込みパッケージの変換は SnowConvert AI ではまだサポートされていません。
関連 EWIs¶
[SSC-EWI-0056](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0056):作成型はサポートされていません。
[SSC-EWI-0073](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0073):機能的同等性レビューを保留中。
[SSC-EWI-0028](../../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI.md#ssc-ewi-0028):Snowflakeではサポートされていない型です。
[SSC-FDM-0006](../../../../general/technical-documentation/issues-and-troubleshooting/functional-difference/generalFDM.md#ssc-fdm-0006):数値型の列はSnowflakeでは同様の動作をしない場合があります。