SnowConvert AI - Oracle - DML STATEMENTS¶
Description ¶
Les extensions d’instruction DML diffèrent des instructions normales DML car elles peuvent utiliser des éléments PL/SQL tels que des collections et des enregistrements. Jusqu’à présent, certains de ces éléments n’étaient pas pris en charge par Snowflake Scripting. Si une instruction n’est pas prise en charge, une EWI sera ajoutée lors de la traduction. Les autres instructions DML seront traduites comme si elles ne se trouvaient pas à l’intérieur d’une procédure.
Extension de l’instruction INSERT¶
Référence de traduction pour convertir des extensions d’instruction Oracle INSERT vers Snowflake Scripting
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’extension PL/SQL de l’instruction SQL
INSERTvous permet de spécifier un nom d’enregistrement dans la clausevalues_clausede l’instructionsingle_table_insertau lieu de spécifier une liste de colonnes dans la clauseinsert_into_clause.(Référence linguistique Oracle PL/SQL Extension d’instruction INSERT)
Snowflake INSERT INTO differs from Snowflake Scripting in variable constraints; needing to have the names preceded by a colon “:” to bind the variables” value.
Recommandations¶
Note
Ce code a été exécuté pour une meilleure compréhension des exemples :
Oracle¶
Snowflake¶
Cas simple d’extension d’instruction INSERT¶
Oracle¶
Résultat¶
NUM |
WORD |
|---|---|
10 |
dix |
11 |
onze |
Exécution de scripts Snowflake¶
Résultat¶
NUM |
WORD |
|---|---|
10 |
dix |
11 |
onze |
Problèmes connus¶
1. Records are not supported by Snowflake Scripting¶
Étant donné que les enregistrements ne sont pas pris en charge par Snowflake Scripting, au lieu d’utiliser la clause VALUES record, il est nécessaire de la transformer en clause SELECT et de scinder les colonnes de l’enregistrement. Pour plus d’informations, consultez la section Définition du type d’enregistrement.
Instruction MERGE¶
Référence de traduction pour convertir l’instruction Oracle MERGE en instruction Snowflake Scripting
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
The
MERGEstatement is used to select rows from one or more sources for update or insertion into a table or view. It is possible to specify conditions to determine whether to update or insert into the target table or view. This statement is a convenient way to combine multiple operations. It lets you avoid multipleINSERT,UPDATE, andDELETEDML statements.MERGEis a deterministic statement. It is not possible to update the same row of the target table multiple times in the sameMERGEstatement. (Oracle PL/SQL Language Reference MERGE Statement)
Syntaxe MERGE Oracle¶
Syntaxe MERGE Snowflake Scripting¶
Modèles d’échantillons de sources¶
Exemple de données auxiliaires¶
Note
Ce code a été exécuté pour une meilleure compréhension des exemples :
Oracle¶
Snowflake¶
Cas simple d’instruction MERGE¶
Oracle¶
Résultat¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
David |
Brown |
Mr |
Snowflake¶
Résultat¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
David |
Brown |
Mr |
Instruction MERGE avec DELETE et clause where¶
To find an equivalence for the DELETE statement and the where clause, it is necessary to reorder and implement some changes in the Snowflake merge statement.
Modification requise :¶
Remplacez la clause Oracle DELETE where_clause par une nouvelle clause Snowflake matchedClause avec l’instruction AND predicate
Remplacez la where_clause de Oracle merge_insert_clause par une instruction AND predicate dans Snowflake notMatchedClause
Oracle¶
Résultat¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
Snowflake¶
Résultat¶
EMPLOYEE_ID |
BONUS |
|---|---|
153 |
180 |
154 |
175 |
155 |
170 |
159 |
180 |
160 |
175 |
161 |
170 |
164 |
72 |
165 |
68 |
166 |
64 |
167 |
62 |
171 |
74 |
172 |
73 |
173 |
61 |
179 |
62 |
Avertissement
In some cases the changes applied may not work as expected, like the next example:
Oracle¶
Résultat¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
4 |
David |
Brown |
Mr |
Snowflake¶
Résultat¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
4 |
David |
Brown |
Mr |
Problèmes connus¶
1. Oracle’s error_logging_clause is not supported¶
Il n’y a pas d’équivalent pour la clause de journalisation des erreurs dans Snowflake Scripting.
2. Changed applied do not work as expected¶
Sometimes, the changes applied to achieve the functional equivalence between Oracle’s merge statement and Snowflake’s do not work as expected.
EWIs connexes¶
SSC-FDM-0006: La colonne de type nombre peut ne pas se comporter de la même manière dans Snowflake.
SSC-FDM-OR0018: L’instruction de fusion peut ne pas fonctionner comme prévu.
Instruction SELECT INTO¶
Référence de traduction pour convertir Oracle SELECT INTO en instruction Snowflake Scripting
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
L’instruction
SELECTINTOrécupère des valeurs dans une ou plusieurs tables de la base de données (comme le fait l’instruction SQLSELECT) et les stocke dans des variables (ce que ne fait pas l’instruction SQLSELECT). (Référence linguistique Oracle PL/SQL Instruction SELECT INTO)
Syntaxe SELECT INTO Oracle¶
Syntaxe de clause Into Oracle¶
Syntaxe de BULK COLLECT (collecte en masse) Oracle¶
Syntaxe SELECT INTO Snowflake Scripting¶
Modèles d’échantillons de sources¶
Exemple de données auxiliaires¶
Note
Ce code a été exécuté pour une meilleure compréhension des exemples :
Oracle¶
Snowflake¶
Cas simple d’instruction SELECT INTO¶
Oracle¶
Résultat¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
un |
Exécution de scripts Snowflake¶
Résultat¶
Problèmes connus¶
1. BULK COLLECT INTO is not supported¶
Snowflake Scripting ne prend pas en charge la clause BULK COLLECT INTO. Toutefois, il est possible d’utiliser ARRAY_AGG pour construire une nouvelle variable. Pour plus d’informations, consultez la [section des opérations BULK COLLECT (collection en masse)](collects-and-records.md#collecting-buk- Operations).
2. Collections and records are not supported¶
Snowflake Scripting does not support the use of collections nor records. It is possible to migrate them using Semi-structured data types as explained in Collections and records.
EWIs connexes¶
Pas d’EWIs connexes.
Contournement pour simuler l’utilisation des enregistrements¶
Avertissement
Cette page est obsolète, mais a été laissée à des fins de compatibilité. Si vous souhaitez voir la section mise à jour, veuillez vous référer à Collections et enregistrements
Description¶
Cette section décrit comment simuler le comportement des enregistrements Oracle dans les instructions SELECT et INSERT, à l’aide de RESULTSET et CURSORS de Snowflake Scripting.
Snowflake Scripting RESULTSET et CURSOR¶
Syntaxe RESULTSET Snowflake¶
Recommandations¶
Note
Pour les exemples suivants, ce code a été exécuté pour une meilleure compréhension des exemples :
Oracle¶
Snowflake¶
Utilisation de RESULTSET et de curseurs au lieu d’enregistrements¶
Oracle¶
Résultat¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
un |
Snowflake¶
Utilisation du curseur
Résultat¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
un |
Problèmes connus¶
1. Limitation in the use of RESULTSET¶
RESULTSET est très limité dans son utilisation. Si l’instruction table(result_scan(last_query_id())), elle doit être utilisée juste après l’exécution de la requête RESULTSET. Pour plus d’informations, consultez ce lien.
EWIs connexes¶
SSC-EWI-0036 : Type de données converti en un autre type de données.
SSC-EWI-0056 : Create table n’est pas pris en charge.