SnowConvert AI – Oracle – CURSOR¶
Beschreibung¶
Gefahr
Dieser Abschnitt behandelt die Übersetzungsreferenz für Oracle Expliziter Cursor. Für Oracle Cursorvariablen gibt es keine Entsprechung in Snowflake Scripting.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Cursors are pointers that allow users to iterate through query results. For more information, see the Oracle Cursors documentation.
Cursor-Syntax von Oracle¶
Cursordefinition
Cursor Open
Cursor Fetch
Cursor Close
Cursorattribute
Cursor-FOR-Schleife
Snowflake Scripting has support for cursors, however, they have fewer functionalities compared to Oracle. For more information, see the Snowflake Scripting cursors documentation.
Cursor-Syntax von Snowflake Scripting¶
Cursordeklaration
Cursor Open
Cursor Fetch
Cursor Close
Cursor-FOR-Schleife
Beispielhafte Quellcode-Muster¶
1. Basic cursor example¶
Cursor-Beispiel von Oracle¶
Cursor-Beispiel von Snowflake Scripting¶
2. Explicit Cursor For Loop¶
Beispiel für explizite Cursor-FOR-Schleife von Oracle¶
Beispiel für explizite Cursor-FOR-Schleife von Snowflake Scripting¶
3. Implicit Cursor For Loop¶
Beispiel für implizite Cursor-FOR-Schleife von Oracle¶
Beispiel für implizite Cursor-FOR-Schleife von Snowflake Scripting¶
4. Parameterized Cursor¶
Sie können „?“ verwenden. In der Filterbedingung des Cursors im Deklarationsabschnitt definieren Sie die Bindungsvariable. Beim Öffnen des Cursors können wir die zusätzliche Syntax „USING <bind_variable\_1 >“ hinzufügen, um die Bindungsvariable zu übergeben.
Im Folgenden finden Sie einige Beispiele für Szenarien, die bei der Verwendung von Parametern in Cursors auftreten können:
4.1 Grundlegendes Beispiel für einen parametrisierten Cursor¶
Beispiel für einen parametrisierten Cursor von Oracle¶
Beispiel für einen parametrisierten Cursor von Snowflake¶
4.2 Parametrisierte Cursor mit mehreren Sendeparametern¶
Beispiel für einen parametrisierten Cursor von Oracle¶
Beispiel für einen parametrisierten Cursor von Snowflake¶
4.3 Parametrisierte Cursor mit Verwendung von Prozedurparametern in Abfragen¶
Beispiel für einen parametrisierten Cursor von Oracle¶
Beispiel für einen parametrisierten Cursor von Snowflake¶
5. Using Cursors In Fetch And For Loop¶
Cursor können mit der Anweisung FOR gesteuert werden, die es ermöglicht, jeden einzelnen Datensatz eines Cursors zu verarbeiten, während die Anweisung FETCH die vom Cursor zurückgegebenen Werte Datensatz für Datensatz in eine Reihe von Variablen schreibt, die PLSQL-Datensätze sein können
5.1 Cursors-FOR-Schleife¶
Beispiel für Cursor-FOR-Schleife von Oracle¶
Beispiel für Cursor-FOR-Schleife von Snowflake¶
5.2 Cursors Fetch¶
Beispiel für Cursor Fetch von Oracle¶
Beispiel für Cursor Fetch von Snowflake¶
Bekannte Probleme¶
1. RETURN clause is not supported in Snowflake Scripting Cursor Declaration¶
Die Cursordeklaration für Snowflake Scripting enthält diese Klausel nicht. Er kann aus der Oracle Cursordefinition entfernt werden, um eine Funktionsäquivalenz zu erhalten.
2. OPEN statement cannot pass values for declared arguments¶
Auch wenn Argumente für einen Cursor deklariert werden können, können ihre Werte in Snowflake Scripting nicht zugewiesen werden. Die beste Alternative ist die Verwendung der USING-Klausel mit Bindungsvariablen.
3. FETCH statement cannot use records¶
Snowflake Scripting unterstützt keine Datensätze. Es ist jedoch möglich, sie mithilfe des OBJECT-Datentyps und der OBJECT_CONSTRUCT()-Methode zu migrieren. Weitere Informationen finden Sie im Abschnitt zur Definition eines Datensatztyps.
4. FETCH BULK COLLECT INTO clause is not supported in Snowflake Scripting¶
Snowflake Scripting bietet keine Unterstützung der BULK COLLECT INTO-Klausel. Es ist jedoch möglich, ARRAY_AGG zusammen mit einer temporären Tabelle zu verwenden, um eine neue Variable mit den Daten zu erstellen, die den Cursor-Informationen entsprechen. Weitere Informationen finden Sie im Abschnitt zu Massenoperationen der Sammlung.
5. Cursor attributes do not exist in Snowflake Scripting¶
Oracle-Cursor haben verschiedene Attribute, mit denen der Benutzer ihren Status überprüfen kann, z. B. ob sie geöffnet sind oder wie viele Zeilen abgerufen wurden. Diese Attribute zum Cursorstatus gibt es in Snowflake Scripting jedoch nicht.
6. The cursor’s query does not have access to the procedure’s variables and parameters¶
In Oracle hat die Abfrage in der Cursordeklaration Zugriff auf Prozedurvariablen und -parameter, in Snowflake Scripting jedoch nicht. Die Alternative dazu ist die Verwendung der USING-Klausel mit Bindungsvariablen.
7. %NOTFOUND attribute is not supported in Snowflake Scripting Cursor¶
In Oracle kann vor dem ersten Abruf von einem geöffneten Cursor cursor_name%NOTFOUND verwendet werden, das TRUE zurückgibt, wenn der letzte Abruf keine Zeile geliefert hat, oder FALSE, wenn der letzte Abruf eine Zeile geliefert hat. Snowflake Scripting unterstützt die Verwendung dieses Attributs nicht. Stattdessen kann es validiert werden, wenn die dem Cursorergebnis zugewiesene Variable Werte enthält
CURSOR DECLARATION¶
Bemerkung
Nicht relevante Anweisung.
Warnung
Beachten Sie, dass diese Anweisung aus der Migration entfernt wurde, da es sich um eine nicht relevante Syntax handelt. Das bedeutet, dass sie in Snowflake nicht erforderlich ist.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Dieser Abschnitt erklärt die Übersetzung der Cursordeklaration in Oracle. Weitere Informationen finden Sie in der folgenden Dokumentation zu Prozeduren und Cursors in Oracle.
Beispielhafte Quellcode-Muster¶
CURSOR DECLARATION¶
Beachten Sie, dass in diesem Beispiel die Anweisung CURSOR gelöscht wurde. Dies ist eine nicht relevante Syntax in der auf Snowflake ausgerichteten Transformation.
Oracle¶
Snowflake¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
Keine zugehörigen EWIs.
Cursorvariablen¶
Übersetzungsreferenz für Cursorvariablen und die OPEN FOR-Anweisung
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Eine Cursor-Variable ist wie ein expliziter Cursor, der nicht auf eine Abfrage beschränkt ist.
(Oracle PL/SQL Language Reference Cursor-Variable Declaration)
Oracle-Syntax¶
Definition des Typs des Referenz-Cursors
Deklaration der Cursorvariablen
OPENFOR-Anweisung
Warnung
Snowflake Scripting hat keine direkte Entsprechung zu Cursor-Variablen und der Anweisung OPEN FOR. Sie können jedoch mit verschiedenen Umgehungsmöglichkeiten emuliert werden, um eine funktionale Entsprechung zu erhalten.
Beispielhafte Quellcode-Muster¶
1. OPEN FOR statement with dynamic SQL inside a VARCHAR variable¶
Oracle-Beispiel¶
Snowflake Scripting-Beispiel¶
2. OPEN FOR statement with dynamic SQL inside a string literal.¶
Oracle-Beispiel¶
Snowflake Scripting-Beispiel¶
3. OPEN FOR statement with SELECT statement¶
Oracle-Beispiel¶
Snowflake Scripting-Beispiel¶
4. Cursor Variable declared with REF CURSOR type¶
Oracle-Beispiel¶
Snowflake Scripting-Beispiel¶
5. OPEN FOR statement with USING clause¶
Oracle-Beispiel¶
Snowflake Scripting-Beispiel¶
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
SSC-EWI-0030: Die folgende Anweisung enthält Verwendungen von dynamischem SQL.
SSC-EWI-0058: Die Funktionalität wird derzeit nicht von Snowflake Scripting unterstützt.
PARAMETRIZED CURSOR¶
Der parametrisierte Cursor wird von Snowflake Scripting nicht unterstützt.
Bemerkung
Einige Teile des Ausgabecodes wurden aus Gründen der Übersichtlichkeit weggelassen.
Beschreibung¶
Oracle unterstützt Parameter für Cursor, die deklariert werden. Snowflake Scripting unterstützt dieses Feature jedoch nicht, so dass die Deklaration und die Verwendung des Cursors nicht möglich sind.
Beispielcode¶
Oracle¶
Snowflake¶
Empfehlungen¶
Versuchen Sie, Bindungen für die Abfrage im Cursor zu verwenden, und öffnen Sie den Cursor mit der Klausel
USING. Denken Sie daran, dass ein Parameter, der mehrfach in einem einzigen Cursor verwendet wird, möglicherweise die mehrfache Übergabe der Variable in derUSING-Klausel erfordert.
Snowflake-Abfrage¶
Ändern Sie den Cursor manuell, um Bindungen zu verwenden.
Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an snowconvert-support@snowflake.com senden.
Zugehörige EWIs¶
SSC-PRF-0004: Diese Anweisung hat Verwendungen für Cursor-FOR-Schleife.
Umgehungsmöglichkeit für Cursor, die Parameter oder Prozedurvariablen verwenden¶
Beschreibung¶
Dieser Abschnitt beschreibt, wie Sie die Verwendung von Cursor-Parametern und Prozedurvariablen innerhalb der Abfrage eines Cursors simulieren können. Der Name der Variablen oder Parameter wird durch Bindungen mit dem Zeichen ? ersetzt. Wenn der Cursor dann geöffnet wird, sollten die Werte mit der USING-Klausel übergeben werden.
Bemerkung
Cursor mit lokalen Variablen¶
Verwenden Sie Bindungen für die Abfrage im Cursor für verwendete Variablen- oder Prozedurparameter und öffnen Sie den Cursor mit der USING-Klausel.
Oracle-Cursor¶
Snowflake Scripting-Cursor¶
Cursor mit Parametern¶
Verwenden Sie Bindungen für die Abfrage im Cursor für jeden verwendeten Parameter und öffnen Sie den Cursor mit der USING-Klausel. Denken Sie daran, dass ein Parameter, der mehrfach in einem einzigen Cursor verwendet wird, möglicherweise die mehrfache Übergabe der Variable in der USING-Klausel erfordert.
Oracle-Cursor¶
Snowflake Scripting-Cursor¶
Zugehörige EWIs¶
SSC-PRF-0004: Diese Anweisung hat Verwendungen für Cursor-FOR-Schleife.