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(...);
  ...
  $$
  ;
Copy

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 Attributen score und pass hinzu.

snowflake.addEvent('my_event', {'score': 89, 'pass': true});
Copy
createStatement(sql_command_object)

Erstellt ein Statement-Objekt und gibt es zurück. Die execute()-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);"}
   );
Copy

Dieses Beispiel bindet Werte:

var stmt = snowflake.createStatement(
   {
   sqlText: "INSERT INTO table2 (col1, col2) VALUES (?, ?);",
   binds:["LiteralValue1", variable2]
   }
);
Copy

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 im Statement-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ützten level-Werte.

Beispiele
snowflake.log("error", "Error message");
Copy
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 Wert true ist.

snowflake.setSpanAttribute("example.boolean", true);
Copy

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

Siehe Verwenden von gespeicherten Prozeduren.

Bemerkung

Diese execute()-Methode (z. B. Statement.execute()) stimmt nicht genau mit der Methode im snowflake-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();
Copy
getColumnName(colIdx)

Diese Methode gibt den Namen der angegebenen Spalte zurück.

Parameter

Die Indexnummer der Spalte (beginnend mit 1, nicht 0).

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.
    );
Copy

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, nicht 0).

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, nicht 0) 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, nicht 0) 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();
Copy
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();
Copy
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();
Copy
isColumnNullable(colIdx)

Diese Methode gibt zurück, ob die angegebene Spalte SQL NULL-Werte zulässt.

Parameter

Der Index der Spalte (beginnend mit 1, nicht 0).

Rückgabewerte

true, wenn die Spalte SQL NULL-Werte zulässt; ansonsten false.

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, nicht 0).

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, nicht 0) 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, oder next() 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, nicht 0) 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, oder next() 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 = [];
    }
Copy

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 = [];
    }
Copy

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();
Copy
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, und false, wenn keine weiteren Zeilen abgerufen werden müssen.

Sie können ResultSet also durchlaufen, bis next() 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();
    $$
    ;
Copy

Ü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 |
+------------------------+
Copy
CALL test_get_epoch_seconds('1970-01-01 00:00:01.987654321');
+------------------------+
| TEST_GET_EPOCH_SECONDS |
|------------------------|
|                      1 |
+------------------------+
Copy
CALL test_get_epoch_seconds('1971-01-01 00:00:00');
+------------------------+
| TEST_GET_EPOCH_SECONDS |
|------------------------|
|               31536000 |
+------------------------+
Copy
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');
Copy

Ü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 |
+------------------------+
Copy
CALL test_get_nano_seconds2('1970-01-01 00:00:01.987654321');
+------------------------+
| TEST_GET_NANO_SECONDS2 |
|------------------------|
|              987654321 |
+------------------------+
Copy
CALL test_get_nano_seconds2('1971-01-01 00:00:00.000123456');
+------------------------+
| TEST_GET_NANO_SECONDS2 |
|------------------------|
|                 123456 |
+------------------------+
Copy
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');
Copy

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 |
+----------------+
Copy

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 |
+----------------+
Copy

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 |
+----------------+
Copy
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();
    $$
    ;
Copy

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 |
+-------------------+
Copy

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 |
+-------------------+
Copy
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 seiner toString-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();
    $$
    ;
Copy
CALL test_toString('1970-01-02 03:04:05');
+------------------------------------------------------------------+
| TEST_TOSTRING                                                    |
|------------------------------------------------------------------|
| "Fri Jan 02 1970 03:04:05 GMT+0000 (Coordinated Universal Time)" |
+------------------------------------------------------------------+
Copy