SnowConvert AI – Redshift – CREATE PROCEDURE¶
Beschreibung¶
Erzeugt eine neue gespeicherte Prozedur oder ersetzt eine bestehende Prozedur für die aktuelle Datenbank. ([Redshift SQL-Referenz: Create Procedure](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_PROCEDURE. html)).
In den folgenden Definitionen finden Sie weitere Informationen zu Prozedurklauseln:
Grammatikalische Syntax¶
The following is the SQL syntax to create a Procedure in Amazon Redshift. See the Redshift CREATE PROCEDURE specification for this syntax.
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
ALIAS DECLARATION¶
Beschreibung¶
Wenn in der Signatur der gespeicherten Prozedur der Name des Arguments fehlt, können Sie einen Alias für das Argument deklarieren.
In Snowflake gibt es dafür keine Unterstützung.
Um eine Funktionsäquivalenz zu erreichen, werden die Aliase entfernt und alle Verwendungen umbenannt.
Wenn ein Alias für einen Parameter namenslos deklariert wird, wird ein generierter Name für den Parameter und die Verwendungen erstellt. Wenn der Alias für einen Parameter mit Namen steht, wird der Alias durch den echten Parameternamen ersetzt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
ARGUMENTS MODE¶
Beschreibung¶
Gespeicherte Prozeduren in Amazon Redshift unterstützen Parameter, die beim Aufruf der Prozedur übergeben werden können. Mit diesen Parametern können Sie Eingabewerte bereitstellen, Ausgabewerte abrufen oder sie für Eingabe- und Ausgabeoperationen verwenden. Im Folgenden finden Sie eine ausführliche Deklaration der Parametertypen, ihrer Modi und Beispiele für ihre Verwendung. Snowflake unterstützt nur Eingabewerte.
IN (Eingabeparameter)¶
Zweck: Wird verwendet, um Werte an die Prozedur zu übergeben.
Standardmodus: Wenn kein Modus angegeben wird, werden die Parameter als IN betrachtet.
Verhalten: An die Prozedur übergebene Werte können innerhalb der Prozedur nicht geändert werden.
OUT (Ausgabeparameter)¶
Zweck: Wird verwendet, um Werte aus der Prozedur zurückzugeben.
Verhalten: Parameter können innerhalb der Prozedur geändert werden und werden an den Aufrufer zurückgegeben. Sie können keinen Anfangswert senden.
INOUT (Eingabe-/Ausgabeparameter)¶
Zweck: Wird verwendet, um Werte an die Prozedur zu übergeben und sie zu ändern, um aktualisierte Werte zurückzugeben.
Verhalten: Kombiniert die Verhaltensweise von IN und OUT. Sie müssen unabhängig von der Ausgabe einen Anfangswert senden.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs¶
[SCC-EWI-0028](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0028) : Typ wird von Snowflake nicht unterstützt.
SSC-EWI-RS0010: Der Aufruf einer Prozedur der obersten Ebene mit OUT-Parametern wird nicht unterstützt.
PROCEDURE BODY¶
Hinweis
SnowConvert does not support translation for PostgreSQL string constant definition in procedures. Use arrange option
Beschreibung¶
Wie Redshift unterstützt auch Snowflake CREATE PROCEDURE mit $$ procedure_logik $$ als Text. Es gibt einen Unterschied in der Redshift-Syntax, bei der ein Wort innerhalb von $$, wie $word$, enthalten sein und als Trennzeichentext, wie $word$ procedure_logic $word$, verwendet werden kann. SnowConvert AI wandelt es um, indem das Wort entfernt wird und das $$ bleibt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
BLOCK STATEMENT¶
Beschreibung¶
PL/pgSQL ist eine blockstrukturierte Sprache. Der gesamte Body einer Prozedur wird in einem Block definiert, der Variablendeklarationen und PL/pgSQL-Anweisungen enthält. Eine Anweisung kann auch ein verschachtelter Block oder Unterblock sein.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
DECLARE¶
Beschreibung¶
Abschnitt, um alle Prozedurvariablen mit Ausnahme der Schleifenvariablen zu deklarieren. Redshift unterstützt mehrere DECLARE-Abschnitte pro Blockanweisung, da Snowflake dieses Verhaltensweise nicht unterstützt, müssen sie in einer einzigen Deklarationsanweisung pro Block zusammengefasst werden.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
EXCEPTION¶
Beschreibung¶
Wenn eine Ausnahme auftritt und Sie einen Block für die Ausnahmebehandlung hinzufügen, können Sie RAISE-Anweisungen und die meisten anderen PL/pgSQL Anweisungen schreiben. Sie können zum Beispiel eine Ausnahme mit einer benutzerdefinierten Meldung auslösen oder einen Datensatz in eine Protokolltabelle einfügen.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
LABEL¶
Beschreibung¶
Labels werden in Redshift verwendet, um einen Block zu qualifizieren oder um die Anweisung EXIT oder END zu verwenden. Snowflake unterstützt keine Etiketten.
Warnung
Da Etiketten in Snowflake nicht unterstützt werden, wird ein EWI gedruckt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs¶
SSC-EWI-0094: Label-Deklaration wird nicht unterstützt
NONATOMIC¶
Beschreibung¶
Die NONATOMIC überträgt nach jeder Anweisung in der gespeicherten Prozedur. Snowflake unterstützt einen AUTOCOMMIT-Parameter. Die Standardeinstellung für AUTOCOMMIT ist TRUE (aktiviert).
Wenn AUTOCOMMIT aktiviert ist, wird jede Anweisung außerhalb einer expliziten Transaktion so behandelt, als befände sie sich innerhalb ihrer impliziten Einzelanweisungstransaktion. Mit anderen Worten, diese Anweisung wird automatisch ausgeführt, wenn sie erfolgreich ist, und automatisch zurückgesetzt, wenn sie fehlschlägt. Mit anderen Worten: Snowflake funktioniert „standardmäßig“ als NONATOMIC.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
POSITIONAL ARGUMENTS¶
Beschreibung¶
Redshift unterstützt namenlose Parameter, indem auf die Parameter über ihre Position mit $ verwiesen wird. Snowflake unterstützt dieses Verhalten nicht. Um die funktionale Äquivalenz sicherzustellen, kann SnowConvert AI diese Referenzen anhand des Parameternamens konvertieren, wenn der Name in der Definition vorhanden ist. Wenn nicht, generiert SnowConvert AI einen Namen für den Parameter und die Verwendungen werden durch den neuen Namen ersetzt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
RAISE¶
Beschreibung¶
Verwenden Sie die
RAISE Level-Anweisung zum Senden von Meldungen und zum Auslösen von Fehlern.
Hinweis
RAISE wird von Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
In Amazon Redshift wird die Anweisung RAISE verwendet, um Meldungen in der Konsole zu erzeugen oder benutzerdefinierte Ausnahmen auszulösen. Redshift ermöglicht es Ihnen, verschiedene Levels anzugeben, um den Schweregrad der Nachricht zu kennzeichnen. In Snowflake kann diese Funktionalität mit einer benutzerdefinierten Funktion (UDF) emuliert werden, die je nach angegebener Stufe einen Aufruf an die Konsole vornimmt.
Ausnahme: \ Wenn der Level „EXCEPTION“ ist, wird eine benutzerdefinierte Ausnahme mit einer allgemeinen Meldung ausgelöst: „Um die EXCEPTION MESSAGE zu sehen, müssen Sie das Protokoll überprüfen.“ Der Ausnahmecode lautet
-20002, der den Benutzer darüber informiert, dass die benutzerdefinierte Meldung in den Protokollen zu finden ist. Dies liegt an den Beschränkungen beim Senden von benutzerdefinierten Ausnahmen in Snowflake.Warnung: \ Wenn der Level WARNING ist, wird
SYSTEM$LOG_WARNverwendet, um die Warnmeldung in das Snowflake-Protokoll zu drucken, was dazu beiträgt, mögliche Probleme hervorzuheben, ohne den Ausführungsfluss zu unterbrechen.Info: \ Für jedes andere Level (wie z. B. „INFO“) wird
SYSTEM$LOG_INFOverwendet, um die Meldung in das Konsolenprotokoll zu drucken. So erhalten Sie eine detailliertere Rückmeldung über den Zustand des Systems, ohne kritische Störungen zu verursachen.
Dieser Ansatz ermöglicht es, die Funktionalität der Schweregrade von Redshift zu emulieren, sie an die Syntax und die Features von Snowflake anzupassen und gleichzeitig die Flexibilität und Kontrolle über die während der Ausführung generierten Meldungen und Ausnahmen zu behalten.
Beschränkungen
Um Protokolle in Snowflake einsehen zu können, benötigen Sie bestimmte Berechtigungen, wie z. B. die Rollen
ACCOUNTADMINoderSECURITYADMIN.Die Protokolle in Snowflake sind nicht sofort verfügbar und können eine leichte Verzögerung aufweisen, bevor die Informationen sichtbar sind.
Personalisierte Fehlermeldungen in Ausnahmen werden nicht wie in Redshift angezeigt. Um benutzerdefinierte Nachrichten anzuzeigen, müssen Sie direkt auf die Protokolle zugreifen.
Weitere Informationen finden Sie auf der folgenden Seite.
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
UDFs ¶
RAISE_MESSAGE_UDF¶
STRING_FORMAT_UDF¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
RETURN¶
Beschreibung¶
Die Anweisung RETURN kehrt von einer gespeicherten Prozedur zum Aufrufer zurück. (Redshift SQL-Referenz: Return).
Die Konvertierung der Rückgabeanweisung von Amazon Redshift zu Snowflake ist unkompliziert, es muss lediglich eine NULL zur Rückgabeanweisung auf Snowflake hinzugefügt werden.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Simple Case¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Wenn die Prozedur über Out-Parameter verfügt¶
SnowConvert AI gibt eine Variante mit Parametern zurück, die als Ausgabeparameter eingerichtet sind. Für jede Rückgabe fügt SnowConvert AI eine Variante als Rückgabewert hinzu.
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
SECURITY (DEFINER | INVOKER)¶
Beschreibung¶
Die SECURITY-Klausel in den gespeicherte Prozeduren in Amazon Redshift definiert den Zugriffssteuerungs- und Berechtigungskontext, unter dem die Prozedur ausgeführt wird. Damit wird festgelegt, ob die Prozedur die Berechtigungen des Eigentümers (Ersteller) oder des Aufrufers (Benutzer, der die Prozedur aufruft) verwendet.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
VARIABLE DECLARATION¶
Beschreibung¶
Deklarieren Sie alle Variablen in einem Block, mit Ausnahme von Schleifenvariablen, im DECLARE-Abschnitt des Blocks.
Hinweis
Variablendeklarationen werden von Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
In Redshift verhindert das Schlüsselwort CONSTANT die Neuzuweisung von Variablen während der Ausführung. Da Snowflake dieses Schlüsselwort nicht unterstützt, wird es bei der Transformation entfernt. Dies hat keinen Einfluss auf die Funktionalität, da die Logik nicht versuchen sollte, eine konstante Variable neu zuzuweisen.
Die NOT NULL-Einschränkung in Redshift stellt sicher, dass einer Variablen kein Nullwert zugewiesen werden kann und erfordert einen Standardwert, der nicht Null ist. Da Snowflake diese Einschränkung nicht unterstützt, wird sie bei der Transformation entfernt. Der Standardwert wird jedoch beibehalten, um die Funktionalität zu erhalten.
Eine Variable, die mit einem Refcursor deklariert wurde, wird in den Typ Resultset umgewandelt, für weitere Informationen DECLARE REFCURSOR.
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme ¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
[SSC-FDM-PG0012](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/postgresqlFDM. md#ssc-fdm-pg0012): NOT NULL-Einschränkung wurde entfernt. Die Zuweisung von NULL an diese Variable führt nicht mehr zu einem Fehler.
TRANSACTIONS¶
COMMIT¶
Beschreibung¶
Bestätigt die aktuelle Transaktion in der Datenbank. Dieser Befehl macht die Datenbankaktualisierungen aus der Transaktion dauerhaft. (Redshift SQL-Referenz: COMMIT)
Grammatikalische Syntax
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
COMMIT mit dem Schlüsselwort TRANSACTION¶
Das Schlüsselwort TRANSACTION wird in Snowflake nicht unterstützt. Da es jedoch keine Auswirkungen auf die Funktionalität hat, wird es einfach entfernt.
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
COMMIT in einer Prozedur für das Standard-Transaktionsverhalten (ohne NONATOMIC-Klausel)¶
To avoid out of scope transaction exceptions in Snowflake, the usages of COMMIT will be matched with BEGIN TRANSACTION.
Wenn mehrere COMMIT Anweisungen in der Prozedur vorhanden sind, werden nach jeder COMMIT-Anweisung mehrere BEGIN TRANSACTION-Anweisungen generiert, um das Transaktionsverhalten von Redshift zu emulieren.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
COMMIT in einer Prozedur mit NONATOMIC-Verhalten¶
Die NONATOMIC-Verhaltensweise von Redshift wird in Snowflake durch die Verwendung des Sitzungsparameters AUTOCOMMIT emuliert, der auf „true“ gesetzt ist.
Das der AUTOCOMMIT-Sitzungsparameter von SnowConvert AI als „true“ angenommen wird, wird die COMMIT-Anweisung in NONATOMIC-Prozeduren so belassen, wie sie ist.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
1. COMMIT innerhalb eines verschachtelten Prozeduraufrufs
Wenn in Redshift eine COMMIT-Anweisung in einem verschachtelten Prozeduraufruf angegeben wird, überträgt der Befehl alle ausstehenden Arbeiten von vorherigen Anweisungen im aktuellen und übergeordneten Bereich. Die Übergabe der Aktionen des übergeordneten Bereichs wird in Snowflake nicht unterstützt. Wenn dieser Fall erkannt wird, wird eine FDM generiert.
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs¶
[SSC-FDM-RS0006](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/redshiftFDM. md#ssc-fdm-rs0006): Die aufgerufene Prozedur enthält Verwendungen von COMMIT/ROLLBACK, das Ändern der aktuellen Transaktion in untergeordneten Bereichen wird in Snowflake nicht unterstützt.
ROLLBACK¶
Beschreibung¶
Stoppt die aktuelle Transaktion und verwirft alle von dieser Transaktion vorgenommenen Aktualisierungen. (Redshift SQL-Referenz: ROLLBACK)
Grammatikalische Syntax
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
ROLLBACK mit dem Schlüsselwort TRANSACTION¶
Das Schlüsselwort TRANSACTION wird in Snowflake nicht unterstützt. Da es jedoch keine Auswirkungen auf die Funktionalität hat, wird es einfach entfernt.
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
ROLLBACK in einer Prozedur für das Standard-Transaktionsverhalten (ohne NONATOMIC-Klausel)¶
To avoid out of scope transaction exceptions in Snowflake, the usages of ROLLBACK will be matched with BEGIN TRANSACTION.
Wenn mehrere Transaktionssteuerungsanweisungen in der Prozedur vorhanden sind, werden nach jeder dieser Anweisungen mehrere BEGIN TRANSACTION-Anweisungen generiert, um das Transaktionsverhalten von Redshift zu emulieren.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
ROLLBACK in einer Prozedur mit NONATOMIC-Verhalten¶
Die NONATOMIC-Verhaltensweise von Redshift wird in Snowflake durch die Verwendung des Sitzungsparameters AUTOCOMMIT emuliert, der auf „true“ gesetzt ist.
Das der AUTOCOMMIT-Sitzungsparameter von SnowConvert AI als „true“ angenommen wird, wird die ROLLBACK-Anweisung in NONATOMIC-Prozeduren so belassen, wie sie ist.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
1. ROLLBACK innerhalb eines verschachtelten Prozeduraufrufs
Wenn in Redshift eine ROLLBACK-Anweisung in einem verschachtelten Prozeduraufruf angegeben wird, überträgt der Befehl alle ausstehenden Arbeiten von vorherigen Anweisungen im aktuellen und übergeordneten Bereich. Die Übergabe der Aktionen des übergeordneten Bereichs wird in Snowflake nicht unterstützt. Wenn dieser Fall erkannt wird, wird eine FDM generiert.
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
2. ROLLBACK von DDL-Anweisungen
In Snowflake, DDL statements perform an implicit commit whenever they are executed inside a procedure, making effective all the work before executing the DDL as well as the DDL itself. This causes the ROLLBACK statement to not be able to discard any changes before that point, this issue will be informed using an FDM.
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs¶
[SSC-FDM-RS0006](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/redshiftFDM. md#ssc-fdm-rs0006): Die aufgerufene Prozedur enthält Verwendungen von COMMIT/ROLLBACK, das Ändern der aktuellen Transaktion in untergeordneten Bereichen wird in Snowflake nicht unterstützt.
SSC-FDM-RS0007: DDL statements perform an automatic COMMIT in Snowflake. ROLLBACK will not undo DDL-committed changes.
TRUNCATE¶
Beschreibung¶
Löscht alle Zeilen aus einer Tabelle, ohne einen Tabellenscan durchzuführen(Redshift SQL-Referenz: TRUNCATE)
Grammatikalische Syntax
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
TRUNCATE in einer Prozedur für das Standard-Transaktionsverhalten (ohne NONATOMIC-Klausel)¶
Da die Anweisung TRUNCATE die Transaktion, in der sie ausgeführt wird, automatisch festschreibt, erzeugt jede ihrer Verwendungen eine Anweisung COMMIT in Snowflake, um diese Verhaltensweise zu emulieren.
Da eine COMMIT-Anweisung generiert wird, wird die gleiche BEGIN TRANSACTION-Anweisung auch für TRUNCATE generiert. Weitere Informationen finden Sie in der COMMIT-Übersetzungsspezifikation.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
TRUNCATE in einer Prozedur mit NONATOMIC-Verhalten¶
Die NONATOMIC-Verhaltensweise von Redshift wird in Snowflake durch die Verwendung des Sitzungsparameters AUTOCOMMIT emuliert, der auf „true“ gesetzt ist.
Since the AUTOCOMMIT session parameter is assumed to be true by SnowConvert AI, the TRUNCATE statement inside NONATOMIC procedures is left as is, there is no need to generate a COMMIT statement because every statement is automatically committed when executed.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
1. TRUNCATE innerhalb eines verschachtelten Prozeduraufrufs
Wenn in Redshift eine COMMIT-Anweisung in einem verschachtelten Prozeduraufruf angegeben wird, überträgt der Befehl alle ausstehenden Arbeiten von vorherigen Anweisungen im aktuellen und übergeordneten Bereich. Die Übergabe der Aktionen des übergeordneten Bereichs wird in Snowflake nicht unterstützt. Wenn dieser Fall erkannt wird, wird eine FDM generiert.
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs¶
[SSC-FDM-RS0006](../../general/technical-documentation/issues-and-troubleshooting/functional-difference/redshiftFDM. md#ssc-fdm-rs0006): Die aufgerufene Prozedur enthält Verwendungen von COMMIT/ROLLBACK, das Ändern der aktuellen Transaktion in untergeordneten Bereichen wird in Snowflake nicht unterstützt.
CONDITIONS¶
CASE¶
Beschreibung¶
Mit der Anweisung
CASEin Redshift können Sie Werte auf der Grundlage von Bedingungen zurückgeben und so bedingte Logik in Abfragen ermöglichen. Es gibt zwei Formen: einfach (simple) und gesucht (searched). (Redshift SQL-Referenz: Case-Bedingungen).
Simple Case¶
Eine einfache CASE-Anweisung ermöglicht die bedingte Ausführung auf der Grundlage der Gleichheit von Operanden.
Hinweis
Simple Case wird von Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Searched Case¶
Hinweis
Searched Case wird von Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
CASE ohne ELSE¶
Wenn in Redshift ein CASE Ausdruck ausgeführt wird und keine der überprüften Bedingungen erfüllt ist und keine ELSE definiert ist, wird die ‚CASE NOT FOUND‘-Ausnahme ausgelöst. In Snowflake wird der Code zwar ausgeführt, liefert aber kein Ergebnis. Um in diesem Szenario die gleiche Funktionalität in Snowflake beizubehalten, wird eine Ausnahme mit dem gleichen Namen deklariert und ausgeführt, wenn keine der CASE-Bedingungen erfüllt ist.
Hinweis
Case ohne Else wird vollständig von Snowflake unterstützt.
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
IF¶
Beschreibung¶
Diese Anweisung ermöglicht es Ihnen, Entscheidungen auf der Grundlage bestimmter Bedingungen zu treffen. (Redshift SQL-Referenz: IF-Bedingungen).
SnowConvert AI fügt die Klammer zu den Bedingungen hinzu und ersetzt das Schlüsselwort ELSIF durch ELSEIF, da Redshift die Klammern in den Bedingungen nicht benötigt und ELSIF das Schlüsselwort ist.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
LOOPS¶
Beschreibung¶
Diese Anweisungen werden verwendet, um einen Codeblock zu wiederholen, bis die angegebene Bedingung erfüllt ist. (Redshift SQL-Referenz: Loops).
CONTINUE¶
Beschreibung¶
Wenn die CONTINUE-Bedingungen „true“ sind, kann die Schleife die Ausführung fortsetzen, wenn sie „false“ ist, wird die Schleife gestoppt. (Redshift SQL-Referenz: CONTINUE-Bedingungen).
Warnung
CONTINUE wird von Snowflake teilweise unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ergebnisse¶
Konsolenausgabe |
|---|
1 |
2 |
3 |
4 |
6 |
7 |
Ausgabecode:¶
Snowflake¶
Ergebnisse¶
Konsolenausgabe |
|---|
1 |
2 |
3 |
4 |
6 |
7 |
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
EXIT¶
Beschreibung¶
Stoppen Sie die Ausführung der Schleife, wenn die in der WHEN-Anweisung definierten Bedingungen „true“ sind (Redshift SQL-Referenz: EXIT-Bedingungen).
Warnung
EXIT wird von Snowflake teilweise unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
FOR¶
Grammatikalische Syntax¶
Ganzzahl-Variante
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
SSC-EWI-PG0006: Das Referenzieren einer Variablen über das Label wird von Snowflake nicht unterstützt.
LOOP¶
Beschreibung¶
Eine einfache Schleife definiert eine unbedingte Schleife, die unbegrenzt wiederholt wird, bis sie durch eine EXIT- oder RETURN- Anweisung beendet wird. (Redshift SQL-Referenz: SIMPLE LOOP-Bedingungen).
Warnung
Einfache Schleifen werden von Snowflake teilweise unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
WHILE¶
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
CURSORS¶
CLOSE CURSOR¶
Beschreibung¶
Schließt alle freien Ressourcen, die mit einem offenen Cursor verbunden sind(Redshift SQL-Referenz: CLOSE Cursor).
Hinweis
Diese Syntax wird in Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
FETCH CURSOR¶
Beschreibung¶
Ruft Zeilen mit Hilfe eines Cursors ab. (Redshift SQL-Referenz: Fetch)
Informationen zur Transformation
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
Fetch into¶
Die FETCH INTO-Anweisung von Redshift ist in Snowflake völlig gleichwertig
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
1. Fetch ohne Zielvariablen wird nicht unterstützt
In Snowflake muss die Anweisung FETCH die Klausel INTO mit den Variablen angeben, in denen die abgerufenen Zeilenwerte gespeichert werden sollen. Wenn eine FETCH-Anweisung im Code gefunden wird, die keine INTO Klausel enthält, wird eine EWI generiert.
Eingabecode:
Ausgabecode:
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs¶
SSC-EWI-PG0015: Fetch cursor ohne Zielvariablen wird in Snowflake nicht unterstützt
OPEN CURSOR¶
Beschreibung¶
Bevor Sie einen Cursor zum Abrufen von Zeilen verwenden können, muss er geöffnet werden. (Redshift SQL-Referenz: Open Cursor).
Hinweis
Diese Syntax wird in Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Redshift¶
Abfrage¶
Snowflake¶
Abfrage¶
Cursor ohne Argumente öffnen¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Cursor mit Argumenten öffnen¶
Cursor arguments have to be bound per each one of its uses, SnowConvert AI will generate the bindings, as well as reorder and repeat the passed values to the OPEN statement as needed to satisfy the bindings.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Cursor mit Prozedurparametern oder lokalen Variablen öffnen¶
The procedure parameters or local variables have to be bound per each one of its uses in the cursor query, SnowConvert AI will generate the bindings and add the parameter or variable names to the OPEN statement, even if the cursor originally had no parameters.
Redshift¶
Abfrage¶
Ergebnis¶
Snowflake¶
Abfrage¶
Ergebnis¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
DECLARE CURSOR¶
Beschreibung¶
Definiert einen neuen Cursor. Verwenden Sie einen Cursor, um jeweils ein paar Zeilen aus dem Resultset einer größeren Abfrage abzurufen. (Redshift SQL-Referenz: DECLARE Cursor).
Hinweis
Diese Syntax wird in Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
Beispielhafte Quellcode-Muster¶
Eingabecode:¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.
DECLARE REFCURSOR¶
Beschreibung¶
Ein
refcursor-Datentyp enthält einfach einen Verweis auf einen Cursor. Sie können eine Cursor-Variable erstellen, indem Sie sie als Variable vom Typrefcursordeklarieren
Hinweis
Refcursor-Deklarationen werden von Snowflake vollständig unterstützt.
Grammatikalische Syntax¶
Da Snowflake den Datentyp REFCURSOR nicht unterstützt, wird seine Funktionalität durch Konvertierung der Variable REFCURSOR in den Typ RESULTSET repliziert. Die Abfrage, die zum Öffnen von REFCURSOR verwendet wird, wird der Variablen RESULTSET zugewiesen, woraufhin ein neuer Cursor erstellt und mit der Variablen RESULTSET verknüpft wird. Außerdem werden alle Verweise auf den ursprünglichen REFCURSOR innerhalb der Cursorlogik aktualisiert, um den neuen Cursor zu verwenden, wodurch die ursprüngliche Funktionalität wiederhergestellt wird.
Beispielhafte Quellcode-Muster¶
Fall: Einzelnutzung¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Fall: Cursor mit Dynamic Sql ¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Redshift¶
Fall: Mehrfachnutzung: ¶
Eingabecode:¶
Redshift¶
Ausgabecode:¶
Snowflake¶
Bekannte Probleme¶
Es gibt keine bekannten Probleme.
Zugehörige EWIs.¶
Es gibt keine zugehörigen EWIs.