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¶
-
createStatement
(sql_command_object)¶ Diese Methode 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)¶ Diese Methode führt direkt 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.
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)" | +------------------------------------------------------------------+