SnowConvert AI – Oracle PL/SQL in JavaScript¶
Dies ist eine Übersetzungsreferenz für die Konvertierung von PL/SQL-Anweisungen in Snowflake JavaScript
Sammlungen & Datensätze¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Datensätze¶
Bemerkung
Das könnte Sie auch interessieren: Deklaration zu den Datensätzen.
Oracle¶
Snowflake¶
Warnung
Die Transformation für den Datensatz SELECT INTO ist in Arbeit.
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Bedingte Kompilierung¶
Beschreibung¶
Bietet eine bedingte Kompilierung basierend auf dem Wahrheitswert einer Bedingung.
Weitere Informationen zur bedingte Kompilierung IF von Oracle finden Sie hier.
Beispielhafte Quellcode-Muster¶
Mögliche IF Variationen¶
Oracle¶
Snowflake Scripting¶
Bekannte Probleme¶
Die Transformation der bedingten Kompilierung wird derzeit nicht unterstützt.
Zugehörige EWIs¶
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
Kontrollanweisungen¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
IF-, ELSIF- und ELSE-Anweisung¶
Oracle¶
Snowflake¶
Schleife¶
Oracle¶
Snowflake¶
WHILE-Anweisung¶
Oracle¶
Snowflake¶
Zugehörige EWIs¶
SSC-EWI-0053: Objekt funktioniert möglicherweise nicht.
Deklarationen¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Deklaration und Zuweisung von Variablen¶
Oracle¶
Snowflake¶
Deklaration von Datensatzvariablen¶
Bemerkung
Möglicherweise ist auch der Abschnitt zur Transformation von Datensätzen von Interesse.
Oracle¶
Snowflake¶
Deklaration der Datensatzvariablen Rowtype¶
Oracle¶
Snowflake¶
Konstanten-Deklaration¶
Oracle¶
Snowflake¶
Cursordeklarationen und -definition¶
Oracle¶
Bemerkung
Möglicherweise sind auch die Cursor-Hilfsfunktionen für Sie von Interesse.
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
SSC-EWI-0022: Ein oder mehrere Bezeichner in dieser Anweisung wurden standardmäßig als Parameter betrachtet.
SSC-EWI-0026: The variable may require a cast to date, time or timestamp.
Ausdrücke und Operatoren¶
Ausdrücke¶
Verkettungsoperator¶
Bemerkung
Möglicherweise sind auch die Concat-Hilfsfunktionen für Sie von Interesse.
Die Oracle-Verkettung wird in JavaScript mit Vorlagenliteral erreicht. Außerdem verwendet es den Concat Helper, um Verkettungen mit Nullen korrekt zu behandeln.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Logische Operatoren¶
Oracle¶
Snowflake¶
Bemerkung
Vielleicht sind auch die IS NULL-Hilfsfunktionen. für Sie von Interesse.
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Vergleichsoperator¶
Dokumentation in Arbeit.
IS [NOT] NULL¶
Bemerkung
Vielleicht sind auch die IS NULL-Hilfsfunktionen für Sie von Interesse.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
LIKE-Operator¶
Bemerkung
Vielleicht sind auch die Hilfsfunktionen für den Like-Operator für Sie von Interesse.
Wenn es eine LIKE-Operation gibt, wird stattdessen die Hilfsfunktion aufgerufen.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Between-Operator¶
Bemerkung
Möglicherweise sind auch die Hilfsfunktionen für den Between-Operator für Sie von Interesse.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
IN-Operator¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Boolesche Ausdrücke¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Funktionsausdrücke¶
Funktionsausdrücke innerhalb von Prozeduren werden in die entsprechende Funktion oder den entsprechenden Ausdruck in Snowflake umgewandelt. Diese Funktionsaufrufe werden je nach umgewandeltem Wert mit einem CALL oder einem SELECT an ein EXEC übergeben.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Weitere Informationen zu den Transformationen der Funktion finden Sie hier.
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
SSC-EWI-OR0013: NLS parameter is not supported.
SSC-FDM-OR0042: In Zeitstempel transformierter Datumstyp weist ein anderes Verhalten auf.
Benutzerdefinierte Funktionen¶
Allgemeine Beschreibung¶
Die meisten Oracle UDFs und UDFs innerhalb von Paketen werden in Snowflake gespeicherte Prozeduren umgewandelt, um die Funktionsäquivalenz aufrechtzuerhalten, da Snowflake UDFs einige Beschränkungen bei der Ausführung von DML (Data Manipulation Language)-Anweisungen hat.
Übersetzung¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Create-Funktion¶
Oracle¶
Snowflake¶
Funktion im Paket¶
Oracle¶
Snowflake¶
Zuordnung von Datentypen zurückgeben¶
Oracle PL SQL-Typ |
Snowflake-Äquivalent |
|---|---|
NUMBER |
FLOAT |
LONG |
VARCHAR |
VARCHAR2 |
STRING |
BLOB |
BINARY |
BFILE |
BINARY |
Aufrufe¶
Innerhalb von Abfragen¶
Calls of functions that were transformed to procedures inside queries are converted into an empty Snowflake JavaScript UDF. This Snowflake UDF is generated in the STUB_UDF.sql file inside the UDF Helpers directory.
Oracle¶
Snowflake¶
Innerhalb anderer Funktionen oder gespeicherter Prozeduren¶
Die Funktionen, die in Prozeduren konvertiert werden, werden mit der EXEC-Hilfsfunktion von Snowflake aufgerufen.
Oracle¶
Snowflake¶
Oracle¶
Snowflake¶
Verschiedene Fälle und Beschränkungen¶
Funktionen mit DMLs¶
Diese Funktionen können nicht in Abfragen in Oracle ausgeführt werden, so dass ihre Verwendung bei der Umwandlung in Snowflake-Prozeduren nicht eingeschränkt wird.
Oracle¶
Snowflake¶
Funktionen mit nur einer SELECT INTO¶
Diese Funktionen werden in Snowflake SQL Funktionen umgewandelt, indem der INTO Teil der Auswahl entfernt wird.
Oracle¶
Snowflake¶
Funktionen mit nur Logik¶
UDFs, die keine Anweisung SQL verwenden, werden in Snowflake JavaScript UDFs umgewandelt.
Bemerkung
Wenn SQL integrierte Funktionen in der Logik enthalten sind, wird die benutzerdefinierte Funktion in eine Snowflake-Prozedur umgewandelt. Die Übersetzung für eingebaute Funktionen in ein JavaScript-Äquivalent ist für die Zukunft geplant.
Beispiele für integrierte Funktionen: UPPER(), TRIM(), ABS().
Oracle¶
Snowflake¶
Funktionen mit mehr als einer SQL-Anweisung¶
Warnung
UDFs, die in Prozeduren umgewandelt werden, können nicht aus einer Abfrage heraus aufgerufen werden.
Oracle¶
Snowflake¶
Funktionen mit nur Logik und integrierten SQL-Funktionen¶
Bemerkung
This transformation is planned to be delivered in the future, currently all functions are being transformed to stored procedures.
Oracle¶
Snowflake¶
RETURN CASE¶
Die Transformation ist dieselbe Transformation, wenn CASE verwendet wird, um eine Variable zuzuweisen.
Oracle¶
Snowflake¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
SSC-EWI-0022: Ein oder mehrere Bezeichner in dieser Anweisung wurden standardmäßig als Parameter betrachtet.
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
SSC-FDM-0029: Die benutzerdefinierte Funktion wurde in eine Snowflake-Prozedur umgewandelt.
Pakete¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Paket-Deklaration¶
Dieser Abschnitt zeigt die Entsprechungen zwischen den Elementen der Deklaration eines Oracle-Pakets und den Snowflake-Anweisungen.
Optionen für die Paketübersetzung¶
Es gibt zwei Optionen zum Migrieren von Paketen. Jede Option wirkt sich direkt auf die Benennung der Objekte innerhalb des Pakets aus. Überprüfen Sie hier, wie Sie diesen Modus in der UI ändern können.
Nehmen wir an, dass wir das nächste Szenario in Oracle haben:
Ein Paket namens
MY_PACKAGE.Eine Prozedur innerhalb des Pakets namens
MY_PROCEDURE.
Option 1 (Verwendung eines neuen Schemas)¶
Mit dieser Option werden die Pakete in neue Schemata umgewandelt. Paketelemente wie Funktionen und Prozeduren werden innerhalb des neuen Schemas erstellt. Wenn sich das Paket bereits innerhalb eines Schemas befindet, wird der Name des Pakets mit dem Namen des Schemas mit einem Unterstrich verbunden.
Dies ist die Standardoption zum Übersetzen von Paketen.
Ergebnis:
A schema will be created with the name
MY_PACKAGE.Der qualifizierte Name der Prozedur wird auf
MY_PACKAGE.MY_PROCEDUREaktualisiert.If the package is inside a schema then the procedure will be updated to
MY_SCHEMA_MY_PACKAGE.MY_PROCEDURE.
Option 2:¶
Mit dieser Option wird der Name der Paketelemente mit dem Paketnamen mit einem Unterstrich verbunden. Es werden keine neuen Schemas erstellt.
Ergebnis:
Der Name der Prozedur wird auf
MY_PACKAGE_MY_PROCEDUREaktualisiert.If the package is inside a schema then the procedure will be updated to
MY_SCHEMA.MY_PACKAGE_MY_PROCEDURE.
Create Package¶
Die Anweisung CREATE PACKAGE wird in eine Anweisung CREATE SCHEMA umgewandelt. Jedes Element innerhalb des Pakets wird außerhalb des Pakets umgewandelt.
Oracle¶
Transformation mit Option 1 (Verwendung des neuen Schemas)¶
Transformation mit Option 2¶
Mit dieser Option wird das Schema nicht generiert und nur die inneren Elemente werden beibehalten, allerdings mit umbenannten Namen.
Deklaration von Prozeduren und Funktionen¶
Prozedur- und Funktionsdeklarationen sind für die Transformation in Snowflake nicht erforderlich. Vorhandene Prozedur- oder Funktionsdeklarationen werden auskommentiert.
Oracle¶
Transformation mit Option 1 (Verwendung des neuen Schemas)¶
Bemerkung
Beachten Sie, dass bei Option 1 die Definition PROCEDURE im Paket entfernt wird, da sie von Snowflake nicht benötigt wird.
Deklaration von Variablen¶
Bemerkung
Möglicherweise ist auch die Hilfsfunktion für Variablen für Sie von Interesse.
Oracle-Paketvariablen werden in Snowflake-Sitzungsvariablen umgewandelt. Den Werten wird ein Präfix hinzugefügt, damit Sie wissen, um welchen Typ es sich innerhalb von gespeicherten Prozeduren handelt. Wenn der Wert Null sein sollte, wird ein „~“ hinzugefügt. Aus diesem Grund benötigen Variablen, die von anderen Variablen abhängen, eine SUBSTR und eine CAST.
Zuordnungen von Datentypen und Codes¶
Datentyp oder -wert |
Code |
|---|---|
Numerische Datentypen |
# |
Datum-/Uhrzeittypen |
& |
Typen von Zeichenfolgen |
$ |
NULL-Werte |
~ |
Die Transformation der Variablen ist unabhängig von der Transformationsoption immer die gleiche.
Oracle¶
Snowflake¶
Konstanten-Deklaration¶
Konstanten werden innerhalb der Prozedur oder Funktion deklariert, die sie verwenden. Vorhandene Deklarationen von Paketkonstanten werden auskommentiert und es wird eine Warnung hinzugefügt.
Oracle¶
Transformation mit Option 1
Bemerkung
Beachten Sie, dass die PROCEDURE-Definition im Paket entfernt wurde, da sie von Snowflake nicht benötigt wird.
Andere Elemente des Pakets¶
Die Transformation für andere Paketelemente wie Cursor, Ausnahmen und benutzerdefinierte Typen ist noch in Arbeit.
Oracle¶
Transformation mit Option 1¶
Definition von Paket-Body¶
Dieser Abschnitt zeigt die Entsprechungen zwischen den Elementen der Definition des Paket-Bodys eines Oracle-Pakets und den Snowflake-Anweisungen.
Create Package Body¶
Elemente innerhalb eines Paket-Bodys werden aus dem Paket extrahiert. Der Paket-Body wird entfernt, so dass die CREATE PACKAGE BODY-Anweisung im konvertierten Code entfernt wird.
Definition der Prozedur¶
Gespeicherte Prozeduren innerhalb von Paketen verwenden dieselben Transformationen, die in der PL/SQL-Übersetzungsreferenz definiert sind.
Oracle¶
Transformation mit Option 1¶
Transformation mit Option 2¶
Funktionsdefinition¶
Funktionen in Paket-Bodys werden in gespeicherte Prozeduren von Snowflake umgewandelt.
Oracle¶
Transformation mit Option 1¶
Transformation mit Option 2¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Andere Elemente des Paket-Body¶
Bitte lesen Sie den Abschnitt „Andere Paketelemente“ in Paketdeklaration.
Paketelemente verwenden¶
Aufruf von Prozeduren innerhalb von Paketen¶
Wenn die Prozedur innerhalb eines Pakets liegt und das Paket innerhalb eines Schemas, wird der Aufruf umbenannt.
Oracle¶
Transformation mit Option 1¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Transformation mit Option 2¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Mit dieser Option wird der Aufruf der Prozeduren entsprechend der Umbenennung der Prozedurendeklaration umbenannt. Der Schemaname wird durch einen Punkt vom Prozedurnamen getrennt.
Snowflake¶
Paketvariablen innerhalb von Prozeduren¶
Bemerkung
Paketvariablen werden in Sitzungsvariablen umgewandelt. Diese Variablen können über die Hilfsfunktion für Paketvariablen verwendet werden.
Bemerkung
Dieses Beispiel verwendet Variablen, die in Pakten deklariert sind, Abschnitt Deklaration von Variablen.
Oracle¶
Snowflake¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
SSC-EWI-0053: Objekt funktioniert möglicherweise nicht.
SSC-EWI-OR0049: Paketkonstanten in zustandsabhängigen Paketen werden noch nicht unterstützt.
Prozeduren¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beispiel 1: Einfache Prozedurkonvertierung
Oracle¶
Snowflake¶
Beispiel 2: Prozedurkonvertierung mit grundlegenden Anweisungen: Deklaration, Zuweisung, Cursor-Deklaration, FOR Cursor, Öffnen, LOOP, CLOSE, IF,
Oracle¶
Snowflake¶
Aufruf von Prozeduren innerhalb anderer Prozeduren¶
Oracle¶
Snowflake¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
SSC-EWI-0022: Ein oder mehrere Bezeichner in dieser Anweisung wurden standardmäßig als Parameter betrachtet.
SSC-FDM-OR0012: COMMIT- und ROLLBACK-Anweisungen erfordern eine ordnungsgemäße Einrichtung, damit sie wie erwartet funktionieren.
SQL Sprachelemente¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Cursor FOR LOOP¶
Bemerkung
Möglicherweise sind auch die Cursor-Hilfsfunktion und die Cursor-Deklaration für Sie von Interesse.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
OPEN-, FETCH- und CLOSE-Anweisung¶
Bemerkung
Möglicherweise sind auch die Cursor-Hilfsfunktion und die Cursor-Deklaration für Sie von Interesse.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Warnung
Transformation for the following lines corresponds to custom types, which are work in progress:
Derzeit wird die nächste Anweisung ausgegeben, aber die Klasse wird noch nicht erstellt. In Zukunft wird eine Warnung für alle Verwendungen der nicht unterstützten benutzerdefinierten Typen ausgegeben.
SQL-impliziter Cursor¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
EXIT¶
Warnung
Die Transformation von Etiketten ist noch nicht abgeschlossen.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Unmittelbar ausführen¶
Bemerkung
Vielleicht ist auch die EXEC-Hilfsfunktion für Sie von Interesse.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Warnung
Da die RETURNING INTO-Klausel eine spezielle Analyse der ausgeführten Anweisung erfordert, ist ihre Übersetzung für die Zukunft geplant.
Warnung
Transformation for the following line corresponds to collection types, which is work in progress:
Derzeit wird die nächste Anweisung ausgegeben, aber die Klasse wird noch nicht erstellt. In Zukunft wird eine Warnung für alle Verwendungen der nicht unterstützten benutzerdefinierten Typen ausgegeben.
Auch der folgende EXECUTE IMMEDIATE-Befehl in Verbindung mit BULK COLLECT in die Variable sals ist ebenfalls in Arbeit.
Fehler und Ausnahmebehandlung¶
Bemerkung
Vielleicht ist auch die Raise-Hilfsfunktion für Sie von Interesse.
Einsatz der Raise-Hilfsfunktion¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Wenn es keinen OTHERS-Handler gibt, verwendet SnowConvert AI den „default“-Fall für den Wechsel, der das ursprüngliche Fehlerobjekt auslöst.
Commit¶
Bemerkung
Vielleicht ist auch die EXEC-Hilfsfunktion für Sie von Interesse.
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
CASE¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
CASE in einer Variablenzuweisung¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Aufruf von externen C- oder Java-Programmen¶
Oracle¶
Snowflake¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
SSC-EWI-0022: Ein oder mehrere Bezeichner in einer bestimmten Anweisung werden standardmäßig als Parameter betrachtet.
SSC-EWI-0053: Objekt funktioniert möglicherweise nicht.
[SSC-EWI-0073](../../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0073): Überprüfung der Funktionsäquivalenz ausstehend.
SSC-EWI-OR0052: Die Ausnahmedeklaration wird durch die „raise“-Funktion gehandhabt.
SSC-EWI-OR0072: Prozedurales Element wird nicht unterstützt.
SSC-EWI-OR0075: Die „Current of“-Klausel wird in Snowflake nicht unterstützt.
SSC-EWI-OR0104: Nicht verwendbare Sammlungsvariable.
SSC-FDM-OR0007: Snowflake unterstützt nicht die Versionierung von Objekten. Entwicklungsteams sollten alternative Ansätze für die Code-Versionierung in Betracht ziehen.
SSC-FDM-OR0009: SQL IMPLICIT CURSOR VALUES MAY DIFFER.
SSC-FDM-OR0011: Das boolesche Argument wurde entfernt, da die Option „Add to stack“ nicht unterstützt wird.
SSC-FDM-OR0012: COMMIT- und ROLLBACK-Anweisungen erfordern eine ordnungsgemäße Einrichtung, damit sie wie erwartet funktionieren.
DDL - DML-Anweisungen¶
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Bemerkung
Alle Anweisungen verwenden die EXEC-Hilfsfunktion.
SELECT¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
SELECT INTO¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
INSERT und INSERTINTOSELECT¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
DELETE¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
UPDATE¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
MERGE¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
SSC-EWI-0022: Ein oder mehrere Bezeichner in einer bestimmten Anweisung werden standardmäßig als Parameter betrachtet.
Synonyme¶
Synonyme, die innerhalb von PL/SQL-Blöcken verwendet werden, werden in das referenzierte Objekt geändert und das Schema wird bei Bedarf hinzugefügt.
Implizites Schema hinzugefügt¶
Wenn sich die Prozedur oder Funktion innerhalb eines Schemas befindet und das Synonym innerhalb dieses Schemas ist, aber ohne das Schema verwendet wird, fügt der konvertierte Code das Schema hinzu.
Oracle¶
Snowflake¶
Schema des referenzierten Objekts hinzugefügt¶
Wenn das Synonym ein Objekt referenziert, das sich in einem bestimmten Schema befindet, wird der Schemaname dem referenzierten Objekt hinzugefügt.
Oracle¶
Snowflake¶
Zugehörige EWIs¶
SSC-FDM-OR0005: Synonyme werden in Snowflake nicht unterstützt, aber Verweise auf dieses Synonym wurden durch den ursprünglichen Objektnamen geändert.
SSC-FDM-OR0042: In Zeitstempel transformierter Datumstyp weist ein anderes Verhalten auf.
Auslöser¶
Warnung
Trigger werden von Snowflake nicht unterstützt. Sie werden dann nicht automatisch migriert.
Snowflake bietet zur Zeit keinen direkten Mechanismus für Trigger, aber einige Snowflake-Funktionen können verwendet werden, um ähnliche Ergebnisse zu erzielen.
Wir empfehlen Ihnen, eine Analyse Ihrer Trigger durchzuführen und sie nach ihrem Zweck zu klassifizieren:
Audit-Trigger: Der Zweck dieser Trigger besteht darin, Informationen zu erfassen und die in einigen Tabellen vorgenommenen Änderungen in anderen Tabellen aufzuzeichnen.
Initialisierungs-Trigger: Diese Trigger dienen dazu, den neuen Datensätzen einige Standardwerte hinzuzufügen. Sie befinden sich in der Regel vor oder nach Einfüge-Triggern
Geschäftsregelnbarriere-Trigger: diese gelten normalerweise für BEFORE/AFTER DELETE oder UPDATE. Diese Trigger sind dazu gedacht, eine Barriere zu schaffen, um zu verhindern, dass Daten eingegeben oder gelöscht werden, die gegen bestimmte Geschäftsregeln verstoßen.
Anstelle von Triggern: werden z. B. Einfügungen in Ansichten nicht unterstützt. Es wird empfohlen, diese Logik in eine gespeicherte Prozedur umzuwandeln und immer dann Aufrufe einzuführen, wenn sie für Einfüge-/Lösch-/Aktualisierungsvorgänge verwendet wurden.
Datenbank-Trigger: kann nicht repliziert werden. Es wird daher empfohlen, diese Logik in einer gespeicherten Prozedur zu kapseln. Aber diese Logik muss manuell aufgerufen werden.
Generische After-Trigger: für einige After-Trigger können Streams und Aufgaben genutzt werden, siehe Abschnitt unten.
Audit-Trigger¶
Vor UPDATE können Trigger für Audit-Fälle wie diesen nicht direkt behandelt werden. Für den Fall INSERT können Sie den für den Initialisierungstrigger erläuterten Standardwertfall verwenden. Für den Fall der Aktualisierung besteht jedoch die einzige Möglichkeit darin, einen Task zu verwenden, wie es später für AFTER Trigger erklärt wird. LAST_UPDATE wird jedoch nicht genau sein, denn es wird einen Versatz geben, da die aufgezeichnete Änderung zum Zeitpunkt der Aufgabenausführung erfolgt (wenn die Aufgaben beispielsweise alle 5 Minuten ausgeführt werden, wird LAST_UPDATE 5 Minuten später aufgezeichnet).
In UPDATE-Fällen ist es nicht möglich, die CURRENT_USER zu erfassen.
Andere Fälle von AUDIT-Triggern sind, wenn sie Änderungen einer Tabelle in einer Update-Tabelle registrieren. Die später beschriebene AFTER Trigger-Technik kann verwendet werden, aber auch hier können USER Informationen nicht nachverfolgt werden und TIME Informationen werden nicht genau sein.
Initialisierungs-Trigger¶
Für diese Trigger können Sie z. B. Snowflake Standard-Spaltenwerte für Sequenzwerte verwenden.
Sie können auch CURRENT__ USER() und CURRENT_TIMESTAMP anstelle von USER oder SYS_TIMESTAMP_ verwenden
Dies gilt nur für die Fälle BEFORE INSERT oder AFTER INSERT.
Barriere durch Geschäftsregeln¶
In diesen Fällen müssen Sie die Trigger-Aktionen nach/vor der Ausführung von DELETE oder UPDATE einfügen.
Eine Aufgabe ist hier nicht zu empfehlen, da Aufgaben nach einem Zeitplan ausgeführt werden und die Zeile dann bereits geändert ist.
Warnung
Dieser Abschnitt zeigt eine bekannte Umgehungsmöglichkeit für die teilweise Implementierung von AFTER-Triggern.
GENERIC AFTER TRIGGER¶
Beispiel 1: Grundlegende Trigger-Konvertierung¶
Oracle¶
Snowflake¶
Bemerkung
Code von SnowConvert AI-Hilfsfunktionen wurde aus dem Beispiel entfernt. Sie finden sie hier.
Ausführliche Erklärung für den Snowflake-Code¶
Streams¶
Diese sorgen dafür, dass die an der Tabelle vorgenommenen Änderungen gespeichert werden. Bitte beachten Sie:
Diese speichern das Delta zwischen dem aktuellen Tabellenstand und dem letzten vom Stream selbst gespeicherten Offset. Bitte berücksichtigen Sie dies bei der Abrechnung.
Beachten Sie, dass diese nicht die Informationen von Aktualisierungen speichern, sondern sie als Einfügung speichern.
Sie können auch nicht so konfiguriert werden, dass sie nur Löschungen oder nur Aktualisierungen verfolgen. Daher müssen sie in der Prozedur und in der Aufgabe selbst gefiltert werden (siehe unten).
Prozeduren¶
Diese sorgen dafür, dass die Anweisung(en) des Triggers SQL ausgeführt werden. Bitte beachten Sie:
Es besteht die Notwendigkeit, den Stream zu spülen, daher wird am Ende der Prozedur ein neuer Stream erstellt.
Alle Aktionen, die gefiltert werden müssen (wie AFTER-INSERTs-nur Trigger), müssen in der gespeicherten Prozedur selbst gefiltert werden.
Aufgaben¶
Diese sorgen dafür, dass regelmäßig auf Stream-Änderungen geprüft wird und führen entsprechend die Anweisung(en) des Triggers SQL aus. Bitte beachten Sie:
Die Tasks arbeiten nach einem Zeitplan, eine Aktion löst sie nicht aus. Das bedeutet, dass es geplante Trigger-Prüfungen gibt, ohne dass Datenänderungen in der Tabelle vorgenommen werden.
Aufgaben können nicht so konfiguriert werden, dass sie mehr als einmal alle sechzig (60) Sekunden ausgeführt werden, da die Mindestzeit eine (1) Minute beträgt.
Sobald der Stream Änderungen erkannt hat, vergehen im schlimmsten Fall sechzig (60) Sekunden zwischen der Erkennung der Änderung und der Ausführung des Triggers.
Durch das Hinzufügen von WHEN wird zwar die Ausführung des Tasks vermieden, aber Snowflake fügt trotzdem jedes Mal, wenn er ausgewertet wird, eine Gebühr hinzu; und diese Gebühr wird der Rechnung hinzugefügt, wenn der Trigger tatsächlich ausgeführt wird.
Die Aufgabe benötigt ein Warehouse, in dem sie ausgeführt werden soll, und muss vom Kunden manuell festgelegt werden.
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
TYPE-Attribut¶
Beschreibung¶
In diesem Kapitel geht es um die Umwandlung des Attributs TYPE, wenn es auf eine Spalte, Variable, einen Datensatz, eine Sammlung oder einen Cursor verweist. Bei der Transformation wird der Datentyp des referenzierten Artikels ermittelt und das Attribut des referenzierten Artikels TYPE durch den ermittelten Datentyp ersetzt.
Beispielhafte Quellcode-Muster¶
TYPE-Attribut für Spalten¶
In diesem Fall ist das referenzierte Element eine Spalte aus einer zuvor erstellten Tabelle.
Oracle¶
Snowflake¶
TYPE-Attribut für Variablen¶
In diesem Fall ist das referenzierte Element eine zuvor deklarierte Variable.
Oracle¶
Snowflake¶
Bemerkung
Weitere Informationen zum FLOAT-Datentyp finden Sie im Abschnitt zum FLOAT-Datentyp.
TYPE-Attribut für Datensätze¶
In diesem Fall ist das referenzierte Element ein zuvor deklarierter Datensatz.
Oracle¶
Snowflake¶
Im obigen Beispiel wird die Variable, die auf die Datensatzvariable verweist, in OBJECT geändert, wie die Datensatzvariable, und die Variable, die auf das Datensatzfeld verweist, wird in den Datentyp des Datensatzfeldes geändert (NUMBER (38, 18)).
Warnung
Diese Änderungen funktionieren nicht für eingebettete Datensätze.
Bemerkung
Weitere Informationen zu Aufzeichnungen finden Sie im Abschnitt Sammlung & Aufzeichnungen.
TYPE-Attribut für Sammlungen¶
In diesem Fall ist das referenzierte Element eine Sammelvariable, aber da Sammlungen nicht unterstützt werden, wird das Attribut des referenzierten Elements TYPE in den Datentyp VARIANT geändert.
Oracle¶
Snowflake¶
TYPE-Attribut für Cursors¶
In diesem Fall ist das referenzierte Element eine Cursor-Variable, aber da REF Cursor nicht unterstützt werden, wird das Attribut des referenzierten Elements TYPE in den Datentyp VARIANT geändert.
Oracle¶
Snowflake¶
Bemerkung
In den Fällen, in denen der Datentyp des referenzierten Elements nicht ermittelt werden kann, wird das Attribut des referenzierten Elements TYPE in VARIANT geändert.
Bekannte Probleme¶
1. Cursors and collections declarations are not supported.¶
Die Deklaration von Sammlungs- und Cursor-Variablen wird noch nicht unterstützt. Daher wird das Attribut für das referenzierende Element TYPE in VARIANT geändert und eine Warnung für diese Fälle hinzugefügt.
2. Original data type could not be obtained.¶
Wenn der Datentyp des referenzierten Objekts nicht ermittelt werden konnte, wird das Attribut des referenzierten Objekts TYPE in VARIANT geändert und eine Warnung hinzugefügt.
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.
SSC-EWI-0058: Die Funktionalität wird derzeit nicht von Snowflake Scripting unterstützt.
SSC-EWI-0062: Die Verwendung des CUSTOM-Typs wurde in ‚variant‘ geändert.
SSC-EWI-OR0129: Die folgende Anweisung verwendet verschachtelte Cursor.
SSC-FDM-0006: Spalte vom Typ ‚number‘ verhält sich in Snowflake möglicherweise nicht ähnlich.