SnowConvert AI – Teradata – SQL in JavaScript (Prozeduren)¶
GET DIAGNOSTICS EXCEPTION¶
Übersetzungsreferenz zur Konvertierung der GET DIAGNOSTICS EXCEPTION-Anweisung von Teradata in Snowflake Scripting
Beschreibung ¶
GET DIAGNOSTICS ruft Informationen über Erfolgs-, Ausnahme- oder Abschlussbedingungen aus dem Diagnosebereich ab.
For more information, see the Teradata GET DIAGNOSTICS documentation.
Bemerkung
Einige Teile des Ausgabecodes werden aus Gründen der Übersichtlichkeit weggelassen.
Beispielhafte Quellcode-Muster ¶
Teradata ¶
Abfrage¶
Snowflake ¶
Javascript¶
Bekannte Probleme¶
Nicht unterstützte BEDINGUNGSATTRIBUT-Anweisungen
CLASS_ORIGIN
CONDITION_IDENTIFIER
CONDITION_NUMBER
MESSAGE_LENGTH
RETURNED_SQLSTATE
SUBCLASS_ORIGIN
If¶
Die Transformation für die IF-Anweisung lautet:
Teradata
Snowflake
Case¶
Die Transformation für die CASE-Anweisung lautet:
Teradata
Snowflake
Cursor-Deklaration, OPEN, FETCH und CLOSE¶
Die Transformation für CURSOR-Anweisungen lautet:
Teradata
Cursor¶
Snowflake
JavaScript Cursor¶
While¶
Die Transformation für die WHILE-Anweisung lautet:
Teradata
While¶
Snowflake¶
While¶
Security¶
Die Transformation für Sicherheitsanweisungen ist:
Teradata |
Snowflake |
|---|---|
SQL SECURITY CREATOR |
EXECUTE AS OWNER |
SQL SECURITY INVOKER |
EXECUTE AS CALLER |
SQL SECURITY DEFINER |
EXECUTE AS OWNER |
FOR-CURSOR-FOR-Loop¶
Die Transformation für die FOR-CURSOR-FOR-Schleife ist:
Teradata
For-Cursor-For-Loop¶
Snowflake
JavaScript For-Cursor-For-Loop¶
_Anmerkung: Die in der Teradata-Prozedur vorhandene FOR -Schleife wird in einen FOR-Block in Javascript transformiert, der ihre Funktionalität emuliert
Prozedurparameter und -variablen, die in Anweisungen referenziert werden¶
Die Transformation für die Parameter und Variablen der Prozedur, auf die innerhalb der Anweisungen der Prozedur verwiesen wird, lautet:
Teradata
Parameters and variables¶
Snowflake
JavaScript-Parameter und -Variablen¶
Anmerkung: Wann immer ein Prozedurparameter oder eine innerhalb der Prozedur deklarierte Variable in einer Teradata-Anweisung referenziert wird, die konvertiert werden muss, wird diese Referenz aus dem resultierenden Text ausgeblendet, um die Funktionalität der ursprünglichen Referenz zu erhalten.
Leave¶
In Javascript ist es möglich, break mit einem zusätzlichen Parameter zu verwenden und so die Verhaltensweise eines Teradata LEAVE-Sprungs zu emulieren.
Labels können auch durch die Verwendung von LABELED-Anweisungen in Javascript emuliert werden.
Die Transformation für die LEAVE-Anweisung lautet:
Teradata
Leave¶
Snowflake
JavaScript Leave¶
Ergebnisse aus Prozeduren abrufen¶
Beschreibung der Übersetzung¶
In Teradata gibt es zwei Möglichkeiten, Daten aus einer Prozedur zurückzugeben. Die erste ist durch Ausgabeparameter und die zweite durch Dynamische Resultsets und Cursors. Beide werden im folgenden Beispiel gezeigt. Jeder wichtige Punkt wird im Folgenden erläutert.
Beispiel für die Rückgabe von Daten aus einer gespeicherten Prozedur¶
Teradata
Out-Parameter¶
Snowflake
JavaScript Out-Parameter¶
In diesem konvertierten SQL finden mehrere Konvertierungen statt:
Die Definition
DYNAMIC RESULT SETS 2wird in eine VariableDYNAMIC_RESULTSumgewandelt.
When a cursor with an
WITH RETURNattribute is opened (and therefore a query is executed), its query ID is stored in the_OUTQUERIEScollection to be later returned. The query id is obtained by thegetQueryId()function provided in the JavaScript API for Snowflake stored procedures.Nur die ersten k Abfragen-IDs werden in der Sammlung gespeichert, wobei k der Wert der Variable
DYNAMIC_RESULTSist. Damit wird die Verhaltensweise von Teradata emuliert, das nur die ersten k geöffneten Cursor zurückgibt, auch wenn in der gespeicherten Prozedur mehr geöffnet sind.Die Kombination von
DECLARE CURSOR WITH RETURNmitPREPAREwird übersetzt mit:
The output parameters are supported through the return statement of the procedure. An array is created containing the value of each output parameter and the
_OUTQUERIEScollection. ThePROCRESULTSfunction deals with the creation and filling of this array. See PROCRESULTS() helper for more information.
Beispiel für den Abruf von Daten aus einer gespeicherten Prozedur.¶
Wenn die Ausgabeparameter und die Abfrage-IDs von einer Prozedur zurückgegeben werden, könnte eine zweite Prozedur die erste aufrufen, um diese Werte zu erhalten, wie unten gezeigt:
Teradata
Call-Prozedur¶
Snowflake
JavaScript Call-Prozedur¶
Der Wert des Arguments
P1vonProcedure1wird zurückgegeben und in der VariablenXgespeichert.Die von
Procedure1zurückgegebenen_ OUTQUERIESwerden in der Variablenresultsetgespeichert.
Bemerkung
Diese Verhaltensweise gilt auch für die INOUT-Parameter.
Bekannte Probleme¶
Es wurden keine Probleme gefunden.
Zugehörige EWIs¶
[SSC-EWI-0022](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0022): Ein oder mehrere Bezeichner in dieser Anweisung wurden standardmäßig als Parameter betrachtet.
[SSC-EWI-0023](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0023): Leistungsüberprüfung - Eine Schleife enthält eine Insert-, DELETE- oder UPDATE-Anweisung.
[SSC-EWI-0026](../../general/technical-documentation/issues-and-troubleshooting/conversion-issues/generalEWI. md#ssc-ewi-0026): Die Variable kann eine Umwandlung in ein Datum, eine Zeit oder einen Zeitstempel erfordern.
SSC-FDM-TD0001: Diese Nachricht wird angezeigt, wenn SnowConvert AI einen BLOB-Datentyp findet.