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