API für gespeicherte Prozeduren in JavaScript¶
Unter diesem Thema wird die JavaScript-API für gespeicherte Snowflake-Prozeduren erläutert. Die API besteht aus JavaScript-Objekten und den Methoden in diesen Objekten.
Unter diesem Thema:
Objekt: snowflake
¶
Auf das snowflake
-Objekt kann standardmäßig mit dem JavaScript-Code einer gespeicherten Prozedur zugegriffen werden. Sie müssen das Objekt nicht erstellen. Dieses Objekt enthält die Methoden der API für gespeicherte Prozeduren. Beispiel:
create procedure stproc1() returns string not null language javascript as -- "$$" is the delimiter for the beginning and end of the stored procedure. $$ // The "snowflake" object is provided automatically in each stored procedure. // You don't need to create it. // ||||||||| // vvvvvvvvv var statement = snowflake.createStatement(...); ... $$ ;
Ausführlichere Codebeispiele finden Sie unter Verwenden von gespeicherten Prozeduren.
Konstanten¶
Keine.
Methoden¶
- addEvent(name[, attributes])¶
Fügt ein Ereignis zur Ablaufverfolgung hinzu.
Weitere Informationen zum Verfolgen von Ereignissen mit JavaScript finden Sie unter Ausgeben von Ablaufverfolgungsereignissen in JavaScript.
- Parameter:
name
Der Name des hinzuzufügenden Ereignisses.
attributes
Ein Objekt, das die Attribute angibt, die mit dem Ereignis verknüpft werden sollen.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
name
ist keine Zeichenfolge.Es gibt null oder mehr als zwei Argumente.
- Beispiele:
Fügen Sie ein Ereignis
my_event
mit den Attributenscore
undpass
hinzu.snowflake.addEvent('my_event', {'score': 89, 'pass': true});
- createStatement(sql_command_object)¶
Erstellt ein
Statement
-Objekt und gibt es zurück. Dieexecute()
-Methode für das Objekt kann später ausgeführt werden.- Parameter:
sql_command_object
Der Eingabeparameter ist ein JSON-Objekt (Wörterbuch), das den Text der auszuführenden Anweisung sowie alle Werte enthält, die an diese Anweisung gebunden werden sollen.
- Rückgabewerte:
Ein
Statement
-Objekt.- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
sqlText
fehlt oder leeren Abfragetext enthält.Die Anweisung versucht, ein Argument zu binden, dessen Datentyp nicht unterstützt wird. Weitere Informationen zur Zuordnung von Datentypen finden Sie unter Zuordnen von SQL- und JavaScript-Datentypen. Weitere Informationen zum Binden finden Sie unter Binden von Variablen.
- Beispiele:
Dieses Beispiel bindet keine Werte:
var stmt = snowflake.createStatement( {sqlText: "INSERT INTO table1 (col1) VALUES (1);"} );
Dieses Beispiel bindet Werte:
var stmt = snowflake.createStatement( { sqlText: "INSERT INTO table2 (col1, col2) VALUES (?, ?);", binds:["LiteralValue1", variable2] } );
Weitere Informationen zum Binden, einschließlich zusätzlicher Beispiele, finden Sie unter Binden von Variablen.
- execute(command)¶
Führt einen SQL-Befehl aus.
- Parameter:
Die Eingabe ist dieselbe wie bei der
createStatement()
-Methode.- Rückgabewerte:
Ein Resultset in Form eines
ResultSet
-Objekts.- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Beim Ausführen der Abfrage ist ein Fehler aufgetreten, z. B. ein Kompilierungsfehler.
sqlText
fehlt oder leeren Abfragetext enthält.Die Anweisung versucht, ein Argument zu binden, dessen Datentyp nicht unterstützt wird. Weitere Informationen zur Zuordnung von Datentypen finden Sie unter Zuordnen von SQL- und JavaScript-Datentypen. Weitere Informationen zum Binden, einschließlich zusätzlicher Beispiele, finden Sie unter Binden von Variablen.
Bemerkung
Diese
execute()
-Methode (z. B.snowflake.execute()
) stimmt nicht genau mit der Methode imStatement
-Objekt (z. B.Statement.execute()
) überein.
- log(level, message)¶
Protokolliert eine Meldung mit dem angegebenen Schweregrad.
- Parameter:
level
Der Schweregrad, mit dem die Meldung protokolliert werden soll. Sie können einen der folgenden Zeichenfolgenwerte angeben:
'off'
'trace'
'debug'
'info'
'warn'
'error'
'fatal'
message
Die zu protokollierende Meldung.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
level
ist keine Zeichenfolge.level
ist keiner der oben aufgeführten unterstütztenlevel
-Werte.
- Beispiele:
snowflake.log("error", "Error message");
- setSpanAttribute(key, value)¶
Legt ein Attribut für den aktuellen Bereich (Span) bei der Ablaufverfolgung fest.
Weitere Informationen zum Verfolgen von Ereignissen mit JavaScript finden Sie unter Ausgeben von Ablaufverfolgungsereignissen in JavaScript.
- Parameter:
key
Der Schlüssel des Attributs.
value
Der Wert des Attributs.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Zwei Argumente sind nicht angegeben.
key
ist keine Zeichenfolge.
- Beispiele:
Legt ein Attribut fest, dessen Schlüssel
example.boolean
und dessen Werttrue
ist.snowflake.setSpanAttribute("example.boolean", true);
Objekt: Statement
¶
Ein Statement
-Objekt für gespeicherte Prozeduren bietet die Methoden zum Ausführen einer Abfrageanweisung und zum Zugreifen auf Metadaten (z. B. Spaltendatentypen) über die Anweisung.
Zum Zeitpunkt der Erstellung des Anweisungsobjekts wird die SQL analysiert und eine vorbereitete Anweisung erstellt.
Konstanten¶
Keine.
Methoden¶
- execute()
Diese Methode führt die vorbereitete Anweisung aus, die in diesem
Statement
-Objekt gespeichert ist.- Parameter:
Keine, da die Methode Informationen verwendet, die bereits im
Statement
-Objekt gespeichert sind.- Rückgabewerte:
Ein Resultset in Form eines
ResultSet
-Objekts.- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Abfrage fehlschlägt.
- Beispiele:
Bemerkung
Diese
execute()
-Methode (z. B.Statement.execute()
) stimmt nicht genau mit der Methode imsnowflake
-Objekt (z. B.snowflake.execute()
) überein.snowflake.execute(statement_in_JSON_form)
erfordert einen Parameter, bei dem es sich um die auszuführende SQL-Anweisung handelt.Statement.execute()
akzeptiert keinen Parameter, sondern verwendet die SQL-Anweisung, die bei der Erstellung des Statement-Objekts angegeben wurde.
- getColumnCount()¶
Diese Methode gibt die Anzahl der Spalten im Resultset für eine ausgeführte Abfrage zurück. Wenn die Abfrage noch nicht ausgeführt wurde, löst die Methode einen Fehler aus.
- Parameter:
Keine.
- Rückgabewerte:
Die Anzahl der Spalten.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde (und die Anzahl der zurückgegebenen Spalten daher nicht unbedingt ermittelt werden kann).
- Beispiele:
var column_count = statement.getColumnCount();
- getColumnName(colIdx)¶
Diese Methode gibt den Namen der angegebenen Spalte zurück.
- Parameter:
Die Indexnummer der Spalte (beginnend mit
1
, nicht0
).- Rückgabewerte:
Der Name der Spalte.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Die Anweisung im
Statement
-Objekt wurde noch nicht ausgeführt.Es ist keine Spalte mit dem angegebenen Index vorhanden.
- getColumnScale(colIdx)¶
Diese Methode gibt die Skalierung der angegebenen Spalte zurück. Die Skalierung ist die Anzahl der Nachkommastellen. Die Skalierung der Spalte wurde in der Anweisung CREATE TABLE oder ALTER TABLE angegeben. Beispiel:
create table scale_example ( n10_4 numeric(10, 4) // Precision is 10, Scale is 4. );
Obwohl diese Methode für jeden Datentyp aufgerufen werden kann, ist sie für die Verwendung mit numerischen Datentypen vorgesehen.
- Parameter:
Der Index der Spalte, für die Sie die Skalierung in Erfahrung bringen möchten (beginnend mit
1
, nicht0
).- Rückgabewerte:
Die Skalierung der Spalte (bei numerischen Spalten);
0
bei nicht numerischen Spalten.- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Die Anweisung im
Statement
-Objekt wurde noch nicht ausgeführt.Es ist keine Spalte mit dem angegebenen Index vorhanden.
- Beispiele:
Siehe Verwenden von gespeicherten Prozeduren (unter
getColumnScale()
).
- getColumnSqlType(colIdx|colName)¶
Diese Methode gibt den SQL-Datentyp der angegebenen Spalte zurück.
- Parameter:
Entweder die Indexnummer der Spalte (beginnend mit
1
, nicht0
) oder der Name der Spalte. (Die Methode ist überladen, um verschiedene Datentypen als Parameter zu akzeptieren.)Der Spaltenname sollte nur in Großbuchstaben angegeben werden, es sei denn, beim Erstellen der Tabelle wurden für den Spaltennamen doppelte Anführungszeichen verwendet (d. h. die Groß-/Kleinschreibung des Spaltennamens wurde beibehalten).
- Rückgabewerte:
Der SQL-Datentyp der Spalte.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Die Anweisung im
Statement
-Objekt wurde noch nicht ausgeführt.Es ist keine Spalte mit dem angegebenen Namen oder Index vorhanden.
- getColumnType(colIdx|colName)¶
Diese Methode gibt den JavaScript-Datentyp der angegebenen Spalte zurück.
- Parameter:
Entweder die Indexnummer der Spalte (beginnend mit
1
, nicht0
) oder der Name der Spalte. (Die Methode ist überladen, um verschiedene Datentypen als Parameter zu akzeptieren.)Der Spaltenname sollte nur in Großbuchstaben angegeben werden, es sei denn, beim Erstellen der Tabelle wurden für den Spaltennamen doppelte Anführungszeichen verwendet (d. h. die Groß-/Kleinschreibung des Spaltennamens wurde beibehalten).
- Rückgabewerte:
Der JavaScript-Datentyp der Spalte.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Die Anweisung im
Statement
-Objekt wurde noch nicht ausgeführt.Es ist keine Spalte mit dem angegebenen Index oder Namen vorhanden.
- getNumDuplicateRowsUpdated()¶
Diese Methode gibt die Anzahl der „doppelten“ Zeilen, d. h. der mehrfach verknüpfte Zeilen, zurück, die durch diese Anweisung aktualisiert wurden. (Weitere Informationen zur Bildung von mehrfach verknüpften Zeilen finden Sie in den Nutzungshinweisen und in den Beispielen zur UPDATE-Anweisung.)
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl (Number), der die Anzahl der aktualisierten mehrfach verknüpften Zeilen angibt.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde.
- getNumRowsAffected()¶
Diese Methode gibt die Anzahl der Zeilen zurück, die von dieser Anweisung betroffen sind (z. B. eingefügt/aktualisiert/gelöscht).
Wenn mehr als ein Änderungstyp zutrifft (z. B. wenn eine MERGE-Operation einige Zeilen eingefügt und andere aktualisiert), dann steht die Zahl für die Gesamtzahl der Zeilen, die von allen Änderungen betroffen sind.
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl (Number), der die Anzahl der betroffenen Zeilen angibt.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde.
- getNumRowsDeleted()¶
Diese Methode gibt die Anzahl der Zeilen zurück, die von dieser Anweisung gelöscht wurden.
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl (Number), der die Anzahl der Zeilen angibt.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde.
- getNumRowsInserted()¶
Diese Methode gibt die Anzahl der Zeilen zurück, die von dieser Anweisung eingefügt wurden.
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl (Number), der die Anzahl der Zeilen angibt.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde.
- getNumRowsUpdated()¶
Diese Methode gibt die Anzahl der Zeilen zurück, die von dieser Anweisung eingefügt wurden.
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl (Number), der die Anzahl der aktualisierten Zeilen angibt.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde.
- getRowCount()¶
Diese Methode gibt die Anzahl der Zeilen im Resultset für eine ausgeführte Abfrage zurück. Wenn die Abfrage noch nicht ausgeführt wurde, löst die Methode einen Fehler aus.
- Parameter:
Keine.
- Rückgabewerte:
Die Anzahl der Zeilen.
- Fehler:
Löst einen JavaScript-Fehler aus, wenn die Anweisung noch nicht ausgeführt wurde (und die Anzahl der zurückgegebenen Zeilen daher nicht ermittelt werden kann).
- Beispiele:
var row_count = statement.getRowCount();
- getQueryId()¶
Diese Methode gibt die UUID der zuletzt ausgeführten Abfrage zurück.
- Parameter:
Keine.
- Rückgabewerte:
Eine Zeichenfolge mit einer UUID, bei der es sich um die Abfrage-ID handelt.
- Fehler:
Wenn von dieser Anweisung noch keine Abfrage ausgeführt wurde, gibt die Methode den Fehler „Statement is not executed yet“ (Anweisung wurde noch nicht ausgeführt) aus.
- Beispiele:
var queryId = statement.getQueryId();
- getSqlText()¶
Diese Methode gibt den Text der vorbereiteten Abfrage im Objekt
Statement
zurück.- Parameter:
Keine.
- Rückgabewerte:
Eine Zeichenfolge des vorbereiteten Abfragetexts.
- Fehler:
Keine.
- Beispiele:
var queryText = statement.getSqlText();
- isColumnNullable(colIdx)¶
Diese Methode gibt zurück, ob die angegebene Spalte SQL NULL-Werte zulässt.
- Parameter:
Der Index der Spalte (beginnend mit
1
, nicht0
).- Rückgabewerte:
true
, wenn die Spalte SQL NULL-Werte zulässt; ansonstenfalse
.- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Die Anweisung im
Statement
-Objekt wurde noch nicht ausgeführt.Es ist keine Spalte mit dem angegebenen Index vorhanden.
- isColumnText(colIdx)¶
Diese Methode gibt „true“ zurück, wenn der Spaltendatentyp einer der folgenden SQL-Textdatentypen ist:
CHAR oder CHAR(N) sowie deren Synonyme CHARACTER und CHARACTER(N)
VARCHAR oder VARCHAR(N)
STRING
TEXT
Andernfalls wird „false“ zurückgegeben.
- Parameter:
Der Index der Spalte (beginnend mit
1
, nicht0
).- Rückgabewerte:
true
, wenn der Spaltendatentyp einer der SQL-Textdatentypen ist;false
bei allen anderen Datentypen.- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
Die Anweisung im
Statement
-Objekt wurde noch nicht ausgeführt.Es ist keine Spalte mit dem angegebenen Index vorhanden.
Bemerkung
Die API bietet verschiedene Methoden zum Ermitteln des Datentyps einer Spalte. Die erste Methode ist oben ausführlich beschrieben. Die übrigen Methoden weisen dieselben Parameter und Fehler auf. Der einzige Unterschied ist der Rückgabewert.
- isColumnArray(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp ARRAY lautet (bei semistrukturierten Daten);false
bei allen anderen Datentypen.
- isColumnBinary(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp BINARY oder VARBINARY lautet;false
bei allen anderen Datentypen.
- isColumnBoolean(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp BOOLEAN lautet;false
bei allen anderen Datentypen.
- isColumnDate(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp DATE lautet;false
bei allen anderen Datentypen.
- isColumnNumber(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp einer der numerischen SQL-Typen ist (NUMBER, NUMERIC, DECIMAL, INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINT, FLOAT, FLOAT4, FLOAT8, DOUBLE, DOUBLE PRECISION oder REAL);false
bei allen anderen Datentypen.
- isColumnObject(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp OBJECT lautet (bei semistrukturierten Daten);false
bei allen anderen Datentypen.
- isColumnTime(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp TIME oder DATETIME lautet;false
bei allen anderen Datentypen.
- isColumnTimestamp(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp einer der SQL-Zeitstempeltypen ist (TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ oder TIMESTAMP_TZ);false
bei allen anderen Datentypen, einschließlich anderer Datentypen für Datum und Uhrzeit (DATE, TIME oder DATETIME).
- isColumnVariant(colIdx)¶
- Rückgabewerte:
true
, wenn der Spaltendatentyp VARIANT lautet (bei semistrukturierten Daten);false
bei allen anderen Datentypen.
Objekt: ResultSet
¶
Dieses Objekt enthält die von einer Abfrage zurückgegebenen Ergebnisse. Die Ergebnisse werden als eine Menge von null oder mehr Zeilen behandelt, von denen jede eine oder mehrere Spalten enthält. Der Begriff „Set“ oder „Menge“ wird hier nicht im mathematischen Sinne verwendet. In der Mathematik ist eine Menge ungeordnet, während ein ResultSet
eine Reihenfolge aufweist.
Ein ResultSet
ähnelt in gewisser Weise dem Konzept eines SQL-Cursors. Beispielsweise können Sie in einem ResultSet
jeweils eine Zeile sehen, genauso wie Sie in einem Cursor jeweils eine Zeile sehen können.
Nachdem Sie ein ResultSet
abgerufen haben, durchlaufen Sie es in der Regel, indem Sie die folgenden Operationen wiederholen:
Aufrufen von
next()
, um die nächste Zeile abzurufen.Abrufen von Daten aus der aktuellen Zeile, indem Sie Methoden wie
getColumnValue()
aufrufen.
Wenn Sie nicht genug über die Daten im ResultSet
wissen (z. B. den Datentyp der einzelnen Spalten nicht kennen), können Sie andere Methoden aufrufen, die Informationen über die Daten liefern.
Einige der Methoden des ResultSet
-Objekts ähneln den Methoden des Statement
-Objekts. Beispielsweise weisen beide Objekte eine getColumnSqlType(colIdx)
-Methode auf.
Konstanten¶
Keine.
Methoden¶
- getColumnCount()
Diese Methode gibt die Anzahl der Spalten in diesem ResultSet zurück.
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl, der die Anzahl der Spalten angibt.
- Fehler:
Keine.
- getColumnSqlType(colIdx|colName)
Diese Methode gibt den SQL-Datentyp der angegebenen Spalte zurück.
- Parameter:
Entweder die Indexnummer der Spalte (beginnend mit
1
, nicht0
) oder der Name der Spalte. (Die Methode ist überladen, um verschiedene Datentypen als Parameter zu akzeptieren.)Der Spaltenname sollte nur in Großbuchstaben angegeben werden, es sei denn, beim Erstellen der Tabelle wurden für den Spaltennamen doppelte Anführungszeichen verwendet (d. h. die Groß-/Kleinschreibung des Spaltennamens wurde beibehalten).
- Rückgabewerte:
Der SQL-Datentyp der Spalte.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
ResultSet
ist leer, odernext()
wurde noch nicht aufgerufen.Es ist keine Spalte mit dem angegebenen Index oder Namen vorhanden.
- getColumnValue(colIdx|colName)¶
Diese Methode gibt den Wert einer Spalte in der aktuellen Zeile zurück (d. h. die Zeile, die zuletzt von
next()
abgerufen wurde).- Parameter:
Entweder die Indexnummer der Spalte (beginnend mit
1
, nicht0
) oder der Name der Spalte. (Die Methode ist überladen, um verschiedene Datentypen als Parameter zu akzeptieren.)Der Spaltenname sollte nur in Großbuchstaben angegeben werden, es sei denn, beim Erstellen der Tabelle wurden für den Spaltennamen doppelte Anführungszeichen verwendet (d. h. die Groß-/Kleinschreibung des Spaltennamens wurde beibehalten).
- Rückgabewerte:
Der Wert der angegebenen Spalte.
- Fehler:
Löst in folgenden Fällen einen JavaScript-Fehler aus:
ResultSet
ist leer, odernext()
wurde noch nicht aufgerufen.Es ist keine Spalte mit dem angegebenen Index oder Namen vorhanden.
- Beispiele:
Konvertieren Sie eine Zeile in der Datenbank in ein JavaScript-Array:
var valueArray = []; // For each row... while (myResultSet.next()) { // Append each column of the current row... valueArray.push(myResultSet.getColumnValue('MY_COLUMN_NAME1')); valueArray.push(myResultSet.getColumnValue('MY_COLUMN_NAME2')); ... // Do something with the row of data that we retrieved. f(valueArray); // Reset the array before getting the next row. valueArray = []; }
Auf den Wert einer Spalte kann auch als Eigenschaft des Objekts
ResultSet
zugegriffen werden (z. B.myResultSet.MY_COLUMN_NAME
).var valueArray = []; // For each row... while (myResultSet.next()) { // Append each column of the current row... valueArray.push(myResultSet.MY_COLUMN_NAME1); valueArray.push(myResultSet.MY_COLUMN_NAME2); ... // Do something with the row of data that we retrieved. f(valueArray); // Reset the array before getting the next row. valueArray = []; }
Bemerkung
Denken Sie daran, dass der Spaltenname im JavaScript-Code nur in Großbuchstaben angegeben werden darf, wenn der Spaltenname in der Anweisung CREATE TABLE durch doppelte Anführungszeichen getrennt wurde.
- getColumnValueAsString(colIdx|colName)¶
Diese Methode gibt den Wert einer Spalte als Zeichenfolge zurück. Dies ist nützlich, wenn Sie einen Spaltenwert unabhängig vom ursprünglichen Datentyp in der Tabelle benötigen.
Die Methode ist identisch mit der Methode
getColumnValue()
, abgesehen davon, dass ein Zeichenfolgenwert zurückgegeben wird.Weitere Details dazu finden Sie unter
getColumnValue()
.
- getNumRowsAffected()
Diese Methode gibt die Anzahl der Zeilen im generierten ResultSet zurück, die von der Anweisung betroffen sind (z. B. eingefügt/aktualisiert/gelöscht).
Wenn mehr als ein Änderungstyp zutrifft (z. B. wenn eine MERGE-Operation einige Zeilen eingefügt und andere aktualisiert), dann steht die Zahl für die Gesamtzahl der Zeilen, die von allen Änderungen betroffen sind.
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl (Number), der die Anzahl der betroffenen Zeilen angibt.
- Fehler:
Keine.
- getQueryId()
Diese Methode gibt die UUID der zuletzt ausgeführten Abfrage zurück.
- Parameter:
Keine.
- Rückgabewerte:
Eine Zeichenfolge mit einer UUID, bei der es sich um die Abfrage-ID handelt.
- Beispiele:
var queryId = resultSet.getQueryId();
- getRowCount()
Diese Methode gibt die Anzahl der Zeilen in diesem ResultSet zurück. (Dies ist die Gesamtzahl der Zeilen, nicht die Anzahl der Zeilen, die noch nicht verbraucht wurden).
- Parameter:
Keine.
- Rückgabewerte:
Ein Wert vom Typ Zahl, der die Anzahl der Zeilen angibt.
- Fehler:
Keine.
- next()¶
Diese Methode ruft die nächste Zeile im
ResultSet
ab und stellt sie für den Zugriff zur Verfügung.Diese Methode gibt nicht die neue Datenzeile zurück. Stattdessen wird die Zeile verfügbar gemacht, sodass Sie Methoden wie
ResultSet.getColumnValue()
aufrufen können, um die Daten abzurufen.Beachten Sie, dass Sie für jede Zeile im Resultset
next()
aufrufen müssen, einschließlich der ersten Zeile.- Parameter:
Keine.
- Rückgabewerte:
true
, wenn eine Zeile abgerufen wurde, undfalse
, wenn keine weiteren Zeilen abgerufen werden müssen.Sie können
ResultSet
also durchlaufen, bisnext()
den Wert „false“ zurückgibt.- Fehler:
Keine.
Objekt: SfDate
¶
JavaScript hat keinen nativen Datentyp, der den Snowflake SQL-Datentypen TIMESTAMP_LTZ, TIMESTAMP_NTZ und TIMESTAMP_TZ entspricht. Wenn Sie einen Wert vom Typ TIMESTAMP aus der Datenbank abrufen und ihn als JavaScript-Variable speichern möchten (beispielsweise den Wert aus einem ResultSet in eine JavaScript-Variable kopieren), verwenden Sie den Snowflake-definierten JavaScript-Datentyp SfDate
. Der Datentyp SfDate
(„SnowFlake Date“) ist eine Erweiterung des JavaScript-Datentyps für Datumsangaben. SfDate
verfügt über zusätzliche Methoden, die im Folgenden dokumentiert sind.
Konstanten¶
Keine.
Methoden¶
Sofern nicht anders angegeben, wird in den folgenden Beispielen die Zeitzone UTC angenommen.
- getEpochSeconds()¶
Diese Methode gibt die Anzahl der Sekunden seit dem Beginn der „Epoche“ zurück (Mitternacht 1. Januar 1970).
- Parameter:
Keine.
- Rückgabewerte:
Die Anzahl der Sekunden zwischen Mitternacht des 1. Januar 1970 und dem in der Variablen gespeicherten Zeitstempel.
- Beispiele:
Erstellen Sie die gespeicherte Prozedur:
CREATE OR REPLACE PROCEDURE test_get_epoch_seconds(TSV VARCHAR) RETURNS FLOAT LANGUAGE JAVASCRIPT AS $$ var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_NTZ;"; var stmt = snowflake.createStatement( {sqlText: sql_command} ); var resultSet = stmt.execute(); resultSet.next(); var my_sfDate = resultSet.getColumnValue(1); return my_sfDate.getEpochSeconds(); $$ ;
Übergeben Sie der Prozedur verschiedene Zeitstempel, und rufen Sie die Anzahl der Sekunden seit der Epoche für jeden Zeitstempel ab.
CALL test_get_epoch_seconds('1970-01-01 00:00:00.000000000'); +------------------------+ | TEST_GET_EPOCH_SECONDS | |------------------------| | 0 | +------------------------+
CALL test_get_epoch_seconds('1970-01-01 00:00:01.987654321'); +------------------------+ | TEST_GET_EPOCH_SECONDS | |------------------------| | 1 | +------------------------+
CALL test_get_epoch_seconds('1971-01-01 00:00:00'); +------------------------+ | TEST_GET_EPOCH_SECONDS | |------------------------| | 31536000 | +------------------------+
- getNanoSeconds()¶
Diese Methode gibt den Wert des Nanosekundenfelds des Objekts zurück. Beachten Sie, dass dies nur die Sekundenbruchteile beinhaltet, nicht die Nanosekunden seit dem Beginn der Epoche. Daher liegt der Wert immer zwischen 0 und 999999999.
- Parameter:
Keine.
- Rückgabewerte:
Die Anzahl der Nanosekunden.
- Beispiele:
Erstellen Sie die gespeicherte Prozedur:
CREATE OR REPLACE PROCEDURE test_get_nano_seconds2(TSV VARCHAR) RETURNS FLOAT LANGUAGE JAVASCRIPT AS $$ var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_NTZ;"; var stmt = snowflake.createStatement( {sqlText: sql_command} ); var resultSet = stmt.execute(); resultSet.next(); var my_sfDate = resultSet.getColumnValue(1); return my_sfDate.getNanoSeconds(); $$ ; -- Should be 0 nanoseconds. -- (> SNIPPET_TAG=query_03_01 CALL test_get_nano_seconds2('1970-01-01 00:00:00.000000000');
Übergeben Sie der Prozedur verschiedene Zeitstempel, und rufen Sie jeweils die Anzahl der Nanosekunden ab.
CALL test_get_nano_seconds2('1970-01-01 00:00:00.000000000'); +------------------------+ | TEST_GET_NANO_SECONDS2 | |------------------------| | 0 | +------------------------+
CALL test_get_nano_seconds2('1970-01-01 00:00:01.987654321'); +------------------------+ | TEST_GET_NANO_SECONDS2 | |------------------------| | 987654321 | +------------------------+
CALL test_get_nano_seconds2('1971-01-01 00:00:00.000123456'); +------------------------+ | TEST_GET_NANO_SECONDS2 | |------------------------| | 123456 | +------------------------+
- getScale()¶
Diese Methode gibt die Genauigkeit des Datentyps zurück, d. h. die Anzahl der Nachkommastellen. Beispielsweise beträgt die Genauigkeit von TIMESTAMP_NTZ(3) 3 (Millisekunden). Die Genauigkeit von TIMESTAMP_NTZ(0) beträgt 0 (keine Sekundenbruchteile). Die Genauigkeit von TIMSTAMP_NTZ beträgt 9 (Nanosekunden).
Das Minimum ist 0. Das Maximum ist 9 (die Genauigkeit beläuft sich auf 1 Nanosekunde). Die Standardgenauigkeit ist 9.
- Parameter:
Keine.
- Rückgabewerte:
Die Anzahl der Stellen nach der Dezimalstelle (Anzahl der Stellen im Sekundenbruchteilfeld).
- Beispiele:
Erstellen Sie die gespeicherte Prozedur:
CREATE OR REPLACE PROCEDURE test_get_scale(TSV VARCHAR, SCALE VARCHAR) RETURNS FLOAT LANGUAGE JAVASCRIPT AS $$ var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_NTZ(" + SCALE + ");"; var stmt = snowflake.createStatement( {sqlText: sql_command} ); var resultSet = stmt.execute(); resultSet.next(); var my_sfDate = resultSet.getColumnValue(1); return my_sfDate.getScale(); $$ ; -- Should be 0. -- (> SNIPPET_TAG=query_04_01 CALL test_get_scale('1970-01-01 00:00:00', '0');
In diesem Beispiel ist der Zeitstempel als TIMESTAMP_NTZ(0) definiert, sodass die Genauigkeit 0 beträgt.
CALL test_get_scale('1970-01-01 00:00:00', '0'); +----------------+ | TEST_GET_SCALE | |----------------| | 0 | +----------------+
In diesem Beispiel ist der Zeitstempel als TIMESTAMP_NTZ(2) definiert, sodass die Genauigkeit 2 beträgt.
CALL test_get_scale('1970-01-01 00:00:01.123', '2'); +----------------+ | TEST_GET_SCALE | |----------------| | 2 | +----------------+
In diesem Beispiel ist der Zeitstempel als TIMESTAMP_NTZ definiert, sodass die Genauigkeit 9 beträgt; dies ist die Standardeinstellung.
CALL test_get_scale('1971-01-01 00:00:00.000123456', '9'); +----------------+ | TEST_GET_SCALE | |----------------| | 9 | +----------------+
- getTimezone()¶
Diese Methode gibt die Zeitzone als Zahl der Minuten vor oder nach UTC zurück.
- Parameter:
Keine.
- Rückgabewerte:
Die Zeitzone als Zahl der Minuten vor oder nach UTC.
- Beispiele:
Erstellen Sie die gespeicherte Prozedur:
CREATE OR REPLACE PROCEDURE test_get_Timezone(TSV VARCHAR) RETURNS FLOAT LANGUAGE JAVASCRIPT AS $$ var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_TZ;"; var stmt = snowflake.createStatement( {sqlText: sql_command} ); var resultSet = stmt.execute(); resultSet.next(); var my_sfDate = resultSet.getColumnValue(1); return my_sfDate.getTimezone(); $$ ;
In diesem Beispiel liegt die Zeitzone 8 Stunden (480 Minuten) hinter UTC.
CALL test_get_timezone('1970-01-01 00:00:01-08:00'); +-------------------+ | TEST_GET_TIMEZONE | |-------------------| | -480 | +-------------------+
In diesem Beispiel liegt die Zeitzone 11 Stunden (660 Minuten) vor UTC.
CALL test_get_timezone('1971-01-01 00:00:00.000123456+11:00'); +-------------------+ | TEST_GET_TIMEZONE | |-------------------| | 660 | +-------------------+
- toString()¶
- Parameter:
Keine.
- Rückgabewerte:
Diese Methode gibt eine Zeichenfolgendarstellung des Zeitstempels zurück.
- Beispiele:
Dies ist ein einfaches Beispiel für das Erstellen eines
SfDate
und das Aufrufen seinertoString
-Methode:CREATE OR REPLACE PROCEDURE test_toString(TSV VARCHAR) RETURNS VARIANT LANGUAGE JAVASCRIPT AS $$ var sql_command = "SELECT '" + TSV + "'::TIMESTAMP_TZ;"; var stmt = snowflake.createStatement( {sqlText: sql_command} ); var resultSet = stmt.execute(); resultSet.next(); var my_sfDate = resultSet.getColumnValue(1); return my_sfDate.toString(); $$ ;
CALL test_toString('1970-01-02 03:04:05'); +------------------------------------------------------------------+ | TEST_TOSTRING | |------------------------------------------------------------------| | "Fri Jan 02 1970 03:04:05 GMT+0000 (Coordinated Universal Time)" | +------------------------------------------------------------------+