SnowConvert AI – Oracle – DML STATEMENTS¶
Beschreibung ¶
DML-Anweisungserweiterungen unterscheiden sich von normalen DML- Anweisungen, da sie PL/SQL-Elemente wie Sammlungen und Datensätze verwenden können. Bislang werden einige dieser Elemente von Snowflake Scripting nicht unterstützt. Wenn eine Anweisung nicht unterstützt wird, wird während der Übersetzung eine EWI hinzugefügt. Andere DML-Anweisungen werden so übersetzt, als befänden sie sich nicht innerhalb einer Prozedur.
Erweiterung der INSERT-Anweisung¶
Übersetzungsreferenz zur Konvertierung der INSERT-Anweisungserweiterung von Oracle in Snowflake Scripting
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Mit der PL/SQL-Erweiterung der SQL
INSERT-Anweisung können Sie einen Datensatznamen in dervalues_clausedessingle_table_insertangeben, anstatt eine Spaltenliste unterinsert_into_clausezu spezifizieren. (Oracle PL/SQL Language Reference Erweiterung INSERT Statement)
Snowflake INSERT INTO differs from Snowflake Scripting in variable constraints; needing to have the names preceded by a colon ‚:‘ to bind the variables‘ value.
Empfehlungen¶
Bemerkung
Dieser Code wurde zum besseren Verständnis der Beispiele ausgeführt:
Oracle¶
Snowflake¶
Simple Case, Erweiterung der INSERT-Anweisung¶
Oracle¶
Ergebnis¶
NUM |
WORD |
|---|---|
10 |
zehn |
11 |
elf |
Snowflake Scripting¶
Ergebnis¶
NUM |
WORD |
|---|---|
10 |
zehn |
11 |
elf |
Bekannte Probleme¶
1. Records are not supported by Snowflake Scripting¶
Da Datensätze von Snowflake Scripting nicht unterstützt werden, muss anstelle der Verwendung der VALUES record-Klausel diese in eine SELECT-Klausel geändert und die Spalten des Datensatzes müssen aufgeteilt werden. Weitere Informationen finden Sie im Abschnitt zur Definition eines Datensatztyps.
MERGE-Anweisung¶
Übersetzungsreferenz zur Konvertierung der MERGE-Anweisung von Oracle in Snowflake Scripting
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
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)
Syntax der MERGE-Anweisung von Oracle¶
Syntax der MERGE-Anweisung von Snowflake Scripting¶
Beispielhafte Quellcode-Muster¶
Beispielhafte Hilfsdaten¶
Bemerkung
Dieser Code wurde zum besseren Verständnis der Beispiele ausgeführt:
Oracle¶
Snowflake¶
Simple Case, MERGE-Anweisung¶
Oracle¶
Ergebnis¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
Snowflake¶
Ergebnis¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
3 |
Jane |
Doe |
Miss |
4 |
Dave |
Brown |
Mr |
MERGE-Anweisung mit DELETE- und WHERE-Klausel¶
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.
Änderungen erforderlich:¶
Ersetzen Sie die DELETE where_clause von Oracle durch eine neue matchedClause von Snowflake mit der AND Prädikat-Anweisung
Ersetzen Sie die where_clause aus Oracles merge\_insert_clause durch eine AND Prädikat-Anweisung in der Snowflakes notMatchedClause
Oracle¶
Ergebnis¶
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¶
Ergebnis¶
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 |
Warnung
In some cases the changes applied may not work as expected, like the next example:
Oracle¶
Ergebnis¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
4 |
Dave |
Brown |
Mr |
Snowflake¶
Ergebnis¶
PERSON_ID |
FIRST_NAME |
LAST_NAME |
TITLE |
|---|---|---|---|
1 |
John |
Smith |
Mr |
2 |
Alice |
Jones |
Mrs. |
4 |
Dave |
Brown |
Mr |
Bekannte Probleme¶
1. Oracle’s error_logging_clause is not supported¶
Es gibt keine Entsprechung für die Klausel zur Fehlerprotokollierung in 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.
Zugehörige EWIs¶
SSC-FDM-0006: Spalte vom Typ ‚number‘ verhält sich in Snowflake möglicherweise nicht ähnlich.
SSC-FDM-OR0018: Die Merge-Anweisung funktioniert möglicherweise nicht wie erwartet
SELECTINTO-Anweisung¶
Übersetzungsreferenz zur Konvertierung der SELECT INTO-Anweisung von Oracle in Snowflake Scripting
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Die Anweisung
SELECTINTOruft Werte aus einer oder mehreren Datenbanktabellen ab (was die SQLSELECT-Anweisung tut) und speichert sie in Variablen (was die SQLSELECT-Anweisung nicht tut). (Oracle PL/SQL Language Reference SELECT INTO Statement)
SELECT INTO-Syntax von Oracle¶
Syntax der INTO-Klausel von Oracle¶
Syntax von BULK COLLECT von Oracle¶
SELECT INTO-Syntax von Snowflake Scripting¶
Beispielhafte Quellcode-Muster¶
Beispielhafte Hilfsdaten¶
Bemerkung
Dieser Code wurde zum besseren Verständnis der Beispiele ausgeführt:
Oracle¶
Snowflake¶
Simple Case, SELECT INTO-Anweisung¶
Oracle¶
Ergebnis¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
ein/e |
Snowflake Scripting¶
Ergebnis¶
Bekannte Probleme¶
1. BULK COLLECT INTO is not supported¶
Snowflake Scripting bietet keine Unterstützung der BULK COLLECT INTO-Klausel. Es ist jedoch möglich, ARRAY_AGG zu verwenden, um eine neue Variable zu erstellen. Weitere Informationen finden Sie im Abschnitt zu Massenoperationen der Sammlung.
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.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
Umgehungsmöglichkeit, um die Verwendung von Datensätzen zu simulieren¶
Warnung
Diese Seite ist veraltet, wurde aber aus Gründen der Kompatibilität belassen. Wenn Sie den aktualisierten Abschnitt sehen möchten, finden Sie entsprechende Informationen unter Sammlungen und Datensätze.
Beschreibung¶
In diesem Abschnitt wird beschrieben, wie Sie die Verhaltensweise von Oracle-Datensätzen in SELECT- und INSERT-Anweisungen simulieren können, indem Sie RESULTSET und CURSORS von Snowflake Scripting verwenden.
Snowflake Scripting RESULTSET und CURSOR¶
RESULTSET-Syntax von Snowflake¶
Empfehlungen¶
Bemerkung
Für die folgenden Beispiele wurde dieser Code zum besseren Verständnis der Beispiele ausgeführt:
Oracle¶
Snowflake¶
RESULTSET und Cursor anstelle von Datensätzen verwenden¶
Oracle¶
Ergebnis¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
ein/e |
Snowflake¶
mit Cursor
Ergebnis¶
AUX_NUM |
AUX_WORD |
|---|---|
1 |
ein/e |
Bekannte Probleme¶
1. Limitation in the use of RESULTSET¶
RESULTSET ist in seiner Verwendung sehr eingeschränkt. Wenn table(result_scan(last_query_id()))-Anweisung verwendet wird, sollte sie direkt nach der Ausführung der Abfrage RESULTSET verwendet werden. Weitere Informationen finden Sie unter diesem Link.
Zugehörige EWIs¶
[SSC-EWI-0036](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0036): Datentyp in einen anderen Datentyp konvertiert.
[SSC-EWI-0056](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0056): Typ erstellen wird nicht unterstützt.