SnowConvert AI - Oracle - Create Type¶
This is a translation reference to convert Oracle Create Type Statements (UDTs) to snowflake
Description générale¶
L’une des fonctionnalités les plus importantes que propose le moteur de base de données Oracle est une approche orientée objet. PL/SQL offre des capacités au-delà des autres bases de données relationnelles sous la forme de OOP en utilisant des instructions de type Java sous forme de paquets, de fonctions, de tables et de types. Ce document couvre le type et la manière dont SnowConvert AI le résout, en restant conforme à la fonctionnalité.
Oracle prend en charge les spécifications suivantes :
Type de données abstrait (ADT) (y compris un type d’objet SQLJ).
Type de tableau variable autonome (varray).
Type de table imbriquée autonome.
Type d’objet incomplet.
Tout cela d’après les informations trouvées dans la documentation Oracle de l’instruction Create Type
Limitations¶
Snowflake ne prend pas en charge les types de données définis par l’utilisateur, selon sa documentation en ligne Types de données non pris en charge, mais il prend en charge les types de données semi-structurées, qui peuvent être utilisés pour imiter la structure hiérarchique de la plupart des types définis par l’utilisateur. C’est pourquoi il existe de nombreuses fonctions de type qui n’ont pas de solution de contournement.
Vous trouverez ci-dessous les fonctions des types définis par l’utilisateur pour lesquelles NO propose une solution de contournement :
Sous-types : Hiérarchie des types¶
Ces instructions ne sont pas prises en charge dans Snowflake. SnowConvert AI les reconnaît uniquement, mais aucune traduction n’est proposée.
Propriétés de type¶
Il s’agit des options qui sont normalement utilisées lors de l’utilisation de OOP dans PL/SQL : Persistable, Instantiable et Final.
Type de table imbriquée¶
Ces instructions ne sont pas prises en charge dans Snowflake. SnowConvert AI les reconnaît uniquement, mais aucune traduction n’est proposée.
Options de création du type de source¶
Ces options correspondent à des options personnalisées concernant l’accès et la requête du type.
Solutions de contournement proposées¶
À propos de la définition des types¶
Pour la définition, la solution proposée consiste à créer un type de données semi-structurées pour imiter le type de données d’Oracle.
À propos de la fonction membre des types¶
Pour les fonctions membres contenant de la logique et DML, la solution de contournement proposée s’appuie sur des aides pour les traduire en procédures stockées.
Prise en charge actuelle par SnowConvert AI¶
The next table shows a summary of the current support provided by the SnowConvert AI tool. Please keep in mind that translations may still not be final, and more work may be needed.
Élément d’instruction de type |
Statut de reconnaissance actuel |
Statut actuel de la traduction |
Solutions de contournement connues |
|---|---|---|---|
Reconnu. |
Partiellement traduit. |
Oui. |
|
Reconnu. |
Non traduit. |
Non. |
|
Reconnu. |
Non traduit. |
Oui. |
|
Reconnu. |
Non traduit. |
Non. |
|
Reconnu. |
Non traduit. |
Oui. |
Problèmes connus¶
1. DML usages for Object Types are not being transformed¶
Pour l’instant, seules les définitions de DDL qui utilisent des types définis par l’utilisateur sont transformées en Variante. Cela signifie que toutes les insertions, mises à jour ou suppressions utilisant des types définis par l’utilisateur ne sont pas transformées et doivent l’être manuellement. Il n’y a pas d’EWI pour cela, mais il existe un élément de travail visant à ajouter cet EWI correspondant.
2. Create Type creation options are not supported¶
Actuellement, il n’existe pas de solution connue pour l’une ou l’autre des options de création, c’est pourquoi elles ne sont pas prises en compte lors de la définition du type.
Définition du type de tableau¶
This is a translation reference to convert the Array Variant of the Oracle Create Type Statements (UDTs) to Snowflake
Danger
SnowConvert AI ne reconnaît que ces définitions et, pour le moment, ne prend en charge aucune traduction pour celles-ci. Cette page n’est utilisée que comme référence future pour les traductions.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Les types de tableau définissent une structure de tableau d’un type de données existant (y compris d’autres types personnalisés).
Pour la traduction des types de tableaux, la définition du type est remplacée par un type de données semi-structurées, puis elle est étendue à toutes les utilisations dans le code. Il s’agit de prendre la définition d’un type et de l’étendre au code d’origine.
Modèles d’échantillons de sources¶
Insertions pour l’utilisation du tableau¶
Les données suivantes seront insérées dans la table avant la requête de sélection. Notez que ces insertions doivent actuellement être migrées manuellement dans Snowflake.
Oracle¶
Snowflake¶
Utilisation du type de tableau¶
Oracle¶
Résultats¶
CUSTOMER_TABLE_ID |
CUSTOMER_DATA |
|---|---|
1 |
[[“2000-0000”,”4000-0000”,”0000-0000”]] |
1 |
[[“8000-2000”,”0000-0000”,”5000-0000”]] |
Snowflake¶
Résultats¶
CUSTOMER_TABLE_ID |
CUSTOMER_DATA |
|---|---|
1 |
[[“2000-0000”, “4000-0000”, “0000-0000”]] |
1 |
[[“8000-2000”, “0000-0000”, “5000-0000”]] |
Problèmes connus¶
1. Create Type creation options are not supported¶
Actuellement, il n’existe pas de solution connue pour l’une ou l’autre des options de création, c’est pourquoi elles ne sont pas prises en compte lors de la définition du type.
2. Migrated code output is not functional¶
Les instructions sont modifiées inutilement, ce qui fait qu’elles ne sont plus fonctionnelles dans le code de sortie. Cette question sera abordée lorsqu’une transformation adéquate sera mise en place.
EWIs connexes¶
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
Définitions des fonctions membres¶
This is a translation reference to convert the Member Functions of the Oracle Create Type Statements (UDTs) to Snowflake
Danger
SnowConvert AI ne reconnaît toujours pas les fonctions membres ni les définitions de corps de type. Cette page n’est utilisée que comme référence future pour la traduction.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Comme les autres définitions de classe, Oracle TYPE peut mettre en œuvre des méthodes pour exposer des comportements basés sur ses attributs. MEMBER FUCTION sera transformée en procédures stockées de Snowflake, afin de maintenir l’équivalence fonctionnelle en raison des limites.
Étant donné que les fonctions sont transformées en procédures, la référence de transformation pour PL/SQL s’applique également ici.
Modèles d’échantillons de sources¶
Insertions pour la fonction membre Simple square()¶
Les données suivantes seront insérées dans la table avant la requête de sélection. Notez que ces insertions doivent actuellement être migrées manuellement dans Snowflake.
Oracle¶
Snowflake¶
Fonction simple square()¶
Oracle¶
Résultats¶
COLUMN1TGET_SQUARE |
|---|
25 |
Snowflake¶
Résultats¶
GET_SQUARE |
|---|
25 |
Problèmes connus¶
Aucun problème connu.
EWIs connexes¶
SSC-EWI-0056 : Create table n’est pas pris en charge.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
SSC-EWI-OR0007: Create Type n’est pas pris en charge dans Snowflake
Définition du type de table imbriquée¶
This is a translation reference to convert the Nested Table Variant of the Oracle Create Type Statements (UDTs) to Snowflake
Danger
SnowConvert AI ne reconnaît que ces définitions, ne prend en charge aucune traduction et il n’existe aucune solution de contournement connue pour les remplacer.
Description¶
Les types de tables imbriquées définissent une structure de table intégrée à un type de données existant (y compris d’autres types personnalisés). Ils peuvent être utilisés comme une version plus puissante du type tableau.
Contrairement aux autres types, il n’existe toujours pas de solution de contournement connue ni de traduction possible.
Modèles d’échantillons de sources¶
Utilisation du type de table imbriquée¶
Oracle¶
Snowflake¶
Problèmes connus¶
1. Create Type creation options are not supported¶
Actuellement, il n’existe pas de solution connue pour les options de création ; c’est pourquoi elles ne sont pas prises en compte lors de la définition du type.
EWIs connexes¶
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle
SSC-EWI-0056 : Create table n’est pas pris en charge.
Définition du type d’objet¶
This is a translation reference to convert the Object Variant of the Oracle Create Type Statements (UDTs) to Snowflake
Note
SnowConvert AI prend en charge une traduction pour les définitions de type d’objet elles-mêmes. Cependant, leur utilisation est n’est pas encore prête.
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Les types d’objets définissent une structure de données similaire à un enregistrement, avec les avantages supplémentaires des définitions des fonctions membres. Cela signifie que leurs données peuvent être utilisées dans le cadre d’un comportement au sein du type.
Pour la traduction des types d’objets, la définition du type est remplacée par un type de données semi-structurées, puis elle est étendue à toutes les utilisations dans le code. Pour les tables, cela signifie remplacer la colonne par une variante et ajouter une vue afin que les sélections (ainsi que les vues) vers la table d’origine puissent continuer à fonctionner.
Modèles d’échantillons de sources¶
Insertions pour l’utilisation de types simples¶
Les données suivantes seront insérées dans la table avant la requête de sélection. Notez que ces insertions doivent actuellement être migrées manuellement dans Snowflake.
Oracle¶
Snowflake¶
Utilisation du type simple¶
Oracle¶
Résultats¶
CUSTOMER_TABLE_ID |
CUSTOMER_DATA |
|---|---|
1 |
[1, Prénom 1, Nom 1] |
2 |
[2, Prénom 2, Nom 2] |
Snowflake¶
Résultats¶
CUSTOMER_TABLE_ID |
CUST_ID |
CUST_FIRST_NAME |
CUST_LAST_NAME |
|---|---|---|---|
1 |
1 |
Prénom 1 |
Nom 1 |
2 |
2 |
Prénom 2 |
Nom 2 |
Insertions pour l’utilisation de types imbriqués¶
Ces instructions doivent être placées entre la création de la table et l’instruction select pour tester la sortie.
Oracle¶
Snowflake¶
Utilisation des types imbriqués¶
Oracle¶
Résultats¶
CUSTOMER_ID |
CUSTOMER_DATA |
|---|---|
1 |
[client 1, [email@domain.com]] |
2 |
[client 2, [email2@domain.com]] |
Snowflake¶
Résultats¶
CUSTOMER_ID |
CUST_NAME |
CUST_EMAIL |
|---|---|---|
1 |
Client 1 |
email@domain.com |
2 |
Client 2 |
e-mail2@domain.com |
Problèmes connus¶
1. Migrated code output is not the same¶
L’instruction view est modifiée inutilement, ce qui fait que la table n’a plus le même comportement dans le code de sortie. Un élément de travail a été mis en place pour corriger ce problème.
2. DML for User-defined Types is not being transformed¶
DML qui interagit avec des éléments contenant des types définis par l’utilisateur (comme une table) ne sont pas transformés. Un élément de travail a été mis en place pour corriger ce problème.
3. Create Type creation options are not supported¶
Actuellement, il n’existe pas de solution connue pour l’une ou l’autre des options de création, c’est pourquoi elles ne sont pas prises en compte lors de la définition du type.
EWIs connexes¶
SSC-EWI-0056 : Create table n’est pas pris en charge.
SSC-EWI-0062: L’utilisation du type personnalisé a changé en variante.
SSC-EWI-0073 : En attente de l’examen de l’équivalence fonctionnelle.
Définition du sous-type¶
This is a translation reference to convert the Subtype Variant of the Oracle Create Type Statements (UDTs) to Snowflake
Danger
Comme il n’y a aucune solution de contournement connue, SnowConvert AI ne reconnaît que ces définitions et ne prend en charge aucune traduction pour celles-ci.
Description¶
Les sous-types définissent une structure de données similaire à un enregistrement, avec les avantages supplémentaires des définitions des fonctions membres. Cela signifie que leurs données peuvent être utilisées dans le cadre d’un comportement au sein du type. Contrairement aux types d’objets, les sous-types sont construits comme une extension d’un autre type existant.
En ce qui concerne les définitions de sous-types, il n’y a toujours pas de traduction, mais il pourrait y avoir un moyen de les réimplémenter en utilisant les définitions des types d’objets et en utilisant ensuite leur traduction respective.
Modèles d’échantillons de sources¶
Sous-types d’un type d’objet¶
Oracle¶
Snowflake¶
Problèmes connus¶
1. Create Type creation options are not supported¶
Actuellement, il n’existe pas de solution connue pour l’une ou l’autre des options de création, c’est pourquoi elles ne sont pas prises en compte lors de la définition du type.
EWIs connexes¶
SSC-EWI-0056 : Create table n’est pas pris en charge.
SSC-EWI-OR0007 : Type de création non pris en charge dans Snowflake.