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. ANYDATA peut ê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 }
Copy

Modèles d’échantillons de sources

Create Table avec ANYDATA

Oracle
CREATE TABLE anydatatable
(
    col1 NUMBER,
    col2 ANYDATA,
    col3 SYS.ANYDATA
);
Copy
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"}}'
    ;
Copy

Insertion de données dans la colonne ANYDATA

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

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;
Copy
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;
Copy
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. ANYDATASET peut ê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 }
Copy

Modèles d’échantillons de sources

Create Table avec ANYDATASET

Oracle
CREATE TABLE anydatasettable
(
	col1 NUMBER,
	col2 ANYDATASET,
	col3 SYS.ANYDATASET
);
Copy
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"}}'
	;
Copy

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;
Copy
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;
Copy

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

  1. SSC-EWI-OR0076: Paquet intégré non pris en charge.

  2. SSC-FDM-0006: La colonne de type de nombre peut ne pas se comporter de la même manière dans Snowflake

  3. 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 }
Copy

Modèles d’échantillons de sources

Create Table avec ANYTYPE

Oracle
CREATE TABLE anytypetable 
(
	col1 NUMBER,
	col2 ANYTYPE,
	col3 SYS.ANYTYPE
);
Copy
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"}}'
	;
Copy

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')
);
Copy
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 ***/!!!
);
Copy

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

  1. SSC-EWI-0056: Le type de création Create Type n’est pas pris en charge.

  2. SSC-EWI-0073: Examen de l’équivalence fonctionnelle en attente.

  3. SSC-EWI-0028: Type non pris en charge dans Snowflake.

  4. SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.