SnowConvert AI - Oracle - Types Any (tout)¶
Description¶
Les types
Any(tout) fournissent une modélisation très flexible des paramètres de procédure et des colonnes de table où le type réel n’est pas connu. Ces types de données vous permettent d’encapsuler dynamiquement et d’accéder à des descriptions de types, des instances de données et des ensembles d’instances de données de tout autre type SQL. ( Référence linguistique Oracle SQL - Types de données ANYTYPES
ANYDATA¶
Description¶
Ce type contient une instance d’un type donné, avec des données, ainsi qu’une description du type.
ANYDATApeut être utilisé comme type de données de colonne de table et vous permet de stocker des valeurs hétérogènes dans une seule colonne. Les valeurs peuvent être des types intégrés à SQL ainsi que des types définis par l’utilisateur. (Référence linguistique Oracle SQL Type de données ANYDATA).
Le type de données ANYDATA n’est pas pris en charge dans Snowflake.
{ SYS.ANYDATA | ANYDATA }
Modèles d’échantillons de sources¶
Create Table avec 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"}}'
;
Insertion de données dans la colonne 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 ***/!!!
);
Exemple fonctionnel¶
Avertissement
Cet exemple n’est pas une traduction de SnowConvert AI, il n’est utilisé que pour montrer l’équivalence fonctionnelle entre Oracle ANYDATA et Snowflake VARIANT
Avertissement
Nous utilisons le paquet intégré ANYDATA. La conversion de ce paquet n’est actuellement pas prise en charge par 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;
Résultat¶
COL1 |
COL2 |
COL3 |
COL4 |
COL5 |
|---|---|---|---|---|
123 |
Texte de test |
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;
Résultat¶
COL1 |
COL2 |
COL3 |
COL4 |
COL5 |
|---|---|---|---|---|
123 |
« Texte de test » |
3.14 |
2021-12-05 |
« 2021-12-05 18:24:43.326 -0800 » |
Problèmes connus¶
1. No access to the ANYDATA built-in package¶
La plupart des opérations avec les colonnes ANYDATA nécessitent d’utiliser le paquet intégré ANYDATA. La transformation pour les paquets intégrés Oracle n’est pas encore prise en charge par SnowConvert AI.
ANYDATASET¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Ce type contient une description d’un type donné ainsi qu’un ensemble d’instances de données de ce type.
ANYDATASETpeut être utilisé comme type de données de paramètres de procédure lorsqu’une telle flexibilité est nécessaire. Les valeurs des instances de données peuvent être des types intégrés à SQL ainsi que des types définis par l’utilisateur. (Référence linguistique Oracle SQL Type de données ANYDATASET).
Le type de données ANYDATASET n’est pas pris en charge dans Snowflake. Une solution de contournement pour ce type de données pourrait Snowflake ARRAY, mais cette transformation n’est actuellement pas prise en charge par SnowConvert.
{ SYS.ANYDATASET | ANYDATASET }
Modèles d’échantillons de sources¶
Create Table avec 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"}}'
;
Insertion de données dans la colonne 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;
Problèmes connus¶
1. Inserts are being parsed incorrectly¶
Certaines des fonctions nécessaires à la création et à l’insertion d’un nouvel objet ANYDATASET ne sont pas analysées correctement par SnowConvert.
1. No access to the ANYDATASET built-in package¶
La plupart des opérations avec les colonnes ANYDATASET nécessitent d’utiliser le paquet intégré ANYDATASET. La transformation pour les paquets intégrés Oracle n’est pas encore prise en charge par SnowConvert AI.
EWIs connexes¶
SSC-EWI-OR0076: Paquet intégré non pris en charge.
SSC-FDM-0006: La colonne de type de nombre peut ne pas se comporter de la même manière dans Snowflake
SSC-EWI-0028: Type non pris en charge par Snowflake.
ANYTYPE¶
Description¶
Ce type peut contenir une description de type de tout type nommé SQL ou de tout type transitoire non nommé. (Référence linguistique Oracle SQL Type de données ANYTYPE).
Le type de données ANYTYPE n’est pas pris en charge dans Snowflake.
{ SYS.ANYTYPE | ANYTYPE }
Modèles d’échantillons de sources¶
Create Table avec 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"}}'
;
Insertion de données dans la colonne 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 ***/!!!
);
Problèmes connus¶
1. No access to the ANYTYPE built-in package¶
La plupart des opérations avec les colonnes ANYDATA nécessitent d’utiliser le paquet intégré ANYTYPE. La transformation pour les paquets intégrés Oracle n’est pas encore prise en charge par SnowConvert AI.
EWIs connexes¶
SSC-EWI-0056: Le type de création Create Type n’est pas pris en charge.
SSC-EWI-0073: Examen de l’équivalence fonctionnelle en attente.
SSC-EWI-0028: Type non pris en charge dans Snowflake.
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.