API de procédures stockées JavaScript¶
Cette rubrique couvre les API JavaScript pour les procédures stockées Snowflake. L’API est composée d’objets JavaScript et des méthodes qu’ils contiennent.
Dans ce chapitre :
Objet : snowflake
¶
L’objet snowflake
est accessible par défaut au code JavaScript d’une procédure stockée ; vous n’avez pas besoin de créer l’objet. Cet objet contient les méthodes dans l’API de la procédure stockée. Par exemple :
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(...); ... $$ ;
Des exemples de code plus complets sont fournis dans Travailler avec des procédures stockées.
Constantes¶
Aucun.
Méthodes¶
- addEvent(name[, attributes])¶
Ajoute un événement pour le traçage.
Pour plus d’informations sur les événements de trace avec JavaScript, voir Émettre des événements de trace en JavaScript
- Paramètres:
name
Le nom de l’événement à ajouter.
attributes
Un objet spécifiant les attributs à associer à l’événement.
- Erreurs:
Lance une erreur JavaScript si :
name
n’est pas une chaîne.Il y a zéro ou plus de deux arguments.
- Exemples:
Ajoutez un événement
my_event
avec les attributsscore
etpass
.snowflake.addEvent('my_event', {'score': 89, 'pass': true});
- createStatement(sql_command_object)¶
Crée un objet
Statement
et le renvoie. La méthodeexecute()
de l’objet peut être exécutée ultérieurement.- Paramètre(s):
sql_command_object
Le paramètre d’entrée est un objet JSON (dictionnaire) contenant le texte de l’instruction à exécuter et toutes les valeurs devant être liées à cette instruction.
- Renvoie:
Un objet
Statement
.- Erreurs:
Lance une erreur JavaScript si :
sqlText
est manquant ou contient un texte de requête vide.L’instruction tente de lier un argument dont le type de données n’est pas pris en charge. Pour plus d’informations sur le mappage des types de données, voir Mappage de type de données SQL et JavaScript. Pour plus d’informations sur la liaison, voir Variables de liaison.
- Exemples:
Cet exemple ne lie aucune valeur :
var stmt = snowflake.createStatement( {sqlText: "INSERT INTO table1 (col1) VALUES (1);"} );
Cet exemple lie des valeurs :
var stmt = snowflake.createStatement( { sqlText: "INSERT INTO table2 (col1, col2) VALUES (?, ?);", binds:["LiteralValue1", variable2] } );
Pour plus d’informations sur la liaison, y compris des exemples supplémentaires, voir Variables de liaison.
- execute(command)¶
Exécute une commande SQL.
- Paramètres:
La saisie est la même que pour la méthode
createStatement()
.- Renvoie:
Un jeu de résultats sous la forme d’un objet
ResultSet
.- Erreurs:
Lance une erreur JavaScript si :
Une erreur, telle qu’une erreur de compilation, s’est produite lors de l’exécution de la requête.
sqlText
est manquant ou contient un texte de requête vide.L’instruction tente de lier un argument dont le type de données n’est pas pris en charge. Pour plus d’informations sur le mappage des types de données, voir Mappage de type de données SQL et JavaScript. Pour plus d’informations sur la liaison, y compris des exemples supplémentaires, voir Variables de liaison.
Note
Cette méthode
execute()
(par exemple,snowflake.execute()
) n’est pas exactement identique à la méthode de l’objetStatement
(par exemple,Statement.execute()
).
- log(level, message)¶
Enregistre un message au niveau de gravité spécifié.
- Paramètres:
level
Niveau de gravité auquel le message doit être enregistré. Vous pouvez spécifier l’une des chaînes suivantes :
'off'
'trace'
'debug'
'info'
'warn'
'error'
'fatal'
message
Le message à enregistrer.
- Erreurs:
Lance une erreur JavaScript si :
level
n’est pas une chaîne.level
n’est pas l’une des valeurslevel
prises en charge énumérées ci-dessus.
- Exemples:
snowflake.log("error", "Error message");
- setSpanAttribute(key, value)¶
Définit un attribut pour le span actuel lors du traçage des événements.
Pour plus d’informations sur les événements de trace avec JavaScript, voir Émettre des événements de trace en JavaScript
- Paramètres:
key
Clé de l’attribut.
value
Valeur de l’attribut.
- Erreurs:
Lance une erreur JavaScript si :
Deux arguments ne sont pas spécifiés.
key
n’est pas une chaîne.
- Exemples:
Définissez un attribut dont la clé est
example.boolean
et la valeurtrue
.snowflake.setSpanAttribute("example.boolean", true);
Objet : Statement
¶
Un objet de procédure stockée Statement
fournit les méthodes permettant d’exécuter une instruction de requête et d’accéder à des métadonnées (telles que des types de données de colonnes) relatives à l’instruction.
Au moment de la création de l’objet Instruction, SQL est analysé et une instruction préparée est créée.
Constantes¶
Aucun.
Méthodes¶
- execute()
Cette méthode exécute l’instruction préparée stockée dans cet objet
Statement
.- Paramètres:
Aucune, car la méthode utilise des informations déjà stockées dans l’objet
Statement
.- Renvoie:
Un jeu de résultats sous la forme d’un objet
ResultSet
.- Erreurs:
Lance une erreur JavaScript en cas d’échec de la requête.
- Exemples:
Note
Cette méthode
execute()
(par exemple,Statement.execute()
) n’est pas exactement identique à la méthode de l’objetsnowflake
(par exemple,snowflake.execute()
).snowflake.execute(statement_in_JSON_form)
nécessite un paramètre, qui est l’instruction SQL à exécuter.Statement.execute()
ne prend aucun paramètre ; il utilise l’instruction SQL spécifiée au moment de la création de l’objet Instruction.
- getColumnCount()¶
Cette méthode renvoie le nombre de colonnes dans le jeu de résultats pour une requête exécutée. Si la requête n’a pas encore été exécutée, cette méthode génère une erreur.
- Paramètres:
Aucun.
- Renvoie:
Le nombre de colonnes.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée (le nombre de colonnes retournées ne peut donc nécessairement pas être déterminé).
- Exemples:
var column_count = statement.getColumnCount();
- getColumnName(colIdx)¶
Cette méthode retourne le nom de la colonne spécifiée.
- Paramètres:
Le numéro d’index de la colonne (à partir de
1
et non de0
).- Renvoie:
Le nom de la colonne.
- Erreurs:
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
- getColumnScale(colIdx)¶
Cette méthode renvoie l’échelle de la colonne spécifiée. L’échelle est le nombre de chiffres après le point décimal. L’échelle de la colonne a été spécifiée dans l’instruction CREATE TABLE ou ALTER TABLE. Par exemple :
create table scale_example ( n10_4 numeric(10, 4) // Precision is 10, Scale is 4. );
Bien que cette méthode puisse être appelée pour tout type de données, elle est destinée à être utilisée avec des types de données numériques.
- Paramètres:
L’index de la colonne pour laquelle vous voulez l’échelle (à partir de
1
, pas0
).- Renvoie:
L’échelle de la colonne (pour les colonnes numériques) ;
0
pour les colonnes non numériques.- Erreurs:
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
- Exemples:
Voir Travailler avec des procédures stockées (recherchez
getColumnScale()
).
- getColumnSqlType(colIdx|colName)¶
Cette méthode renvoie le type de données SQL de la colonne spécifiée.
- Paramètres:
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie:
Le type de données SQL de la colonne.
- Erreurs:
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec le nom ou l’index spécifié n’existe.
- getColumnType(colIdx|colName)¶
Cette méthode renvoie le type de données JavaScript de la colonne spécifiée.
- Paramètres:
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie:
Le type de données JavaScript de la colonne.
- Erreurs:
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index ou le nom spécifié n’existe.
- getNumDuplicateRowsUpdated()¶
Cette méthode renvoie le nombre de lignes « dupliquées » (souvent appelées lignes multi-jointes) mises à jour par cette instruction. (Pour plus d’informations sur la façon dont les lignes multi-jointes sont formées, voir les Notes sur l’utilisation et exemples pour l’instruction UPDATE).
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes multi-jointes mises à jour.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
- getNumRowsAffected()¶
Cette méthode renvoie le nombre de lignes affectées (par exemple, insérées/mises à jour/supprimées) par cette instruction.
Si plus d’un type de changement s’applique (par exemple, une opération MERGE a inséré certaines lignes et en a mis d’autres à jour), alors le nombre est le nombre total de lignes affectées par tous les changements.
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes affectées.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
- getNumRowsDeleted()¶
Cette méthode renvoie le nombre de lignes supprimées par cette instruction.
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes supprimées.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
- getNumRowsInserted()¶
Cette méthode renvoie le nombre de lignes insérées par cette instruction.
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes insérées.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
- getNumRowsUpdated()¶
Cette méthode renvoie le nombre de lignes mises à jour par cette instruction.
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes mises à jour.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée.
- getRowCount()¶
Cette méthode retourne le nombre de lignes dans le jeu de résultats pour une requête exécutée. Si la requête n’a pas encore été exécutée, cette méthode génère une erreur.
- Paramètres:
Aucun.
- Renvoie:
Le nombre de lignes.
- Erreurs:
Lance une erreur JavaScript si l’instruction n’a pas encore été exécutée (et donc le nombre de lignes retournées ne peut pas être déterminé).
- Exemples:
var row_count = statement.getRowCount();
- getQueryId()¶
Cette méthode renvoie le UUID de la dernière requête exécutée.
- Paramètres:
Aucun.
- Renvoie:
Une chaîne contenant un UUID, qui correspond à l’ID de la requête.
- Erreurs:
Si aucune requête n’a encore été exécutée par cette instruction, la méthode lève l’erreur « L’instruction n’est pas encore exécutée ».
- Exemples:
var queryId = statement.getQueryId();
- getSqlText()¶
Cette méthode renvoie le texte de la requête préparée dans l’objet
Statement
.- Paramètres:
Aucun.
- Renvoie:
Une chaîne du texte de requête préparé.
- Erreurs:
Aucun.
- Exemples:
var queryText = statement.getSqlText();
- isColumnNullable(colIdx)¶
Cette méthode indique si la colonne spécifiée autorise les valeurs SQL NULL.
- Paramètres:
L’index de la colonne (à partir de
1
, pas0
).- Renvoie:
true
si la colonne autorise les valeurs SQL NULL ; sinon,false
.- Erreurs:
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
- isColumnText(colIdx)¶
Cette méthode retourne true si le type de données de la colonne est l’un des types de données texte SQL suivants :
CHAR ou CHAR(N), ainsi que leurs synonymes CHARACTER et CHARACTER(N)
VARCHAR ou VARCHAR(N)
STRING
TEXT
Sinon, il retourne faux.
- Paramètres:
L’index de la colonne (à partir de
1
, pas0
).- Renvoie:
true
si le type de données de la colonne est l’un des types de données texte SQL ;false
pour tous les autres types de données.- Erreurs:
Lance une erreur JavaScript si :
Le
Statement
n’a pas encore été exécuté.Aucune colonne avec l’index spécifié n’existe.
Note
L’API fournit plusieurs méthodes pour déterminer le type de données d’une colonne. La première méthode est décrite en détail ci-dessus. Les méthodes restantes ont les mêmes paramètres et les mêmes erreurs. La seule différence est la valeur de retour.
- isColumnArray(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est ARRAY (pour les données semi-structurées) ;false
pour tous les autres types de données.
- isColumnBinary(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est BINARY ou VARBINARY ;false
pour tous les autres types de données.
- isColumnBoolean(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est BOOLEAN ;false
pour tous les autres types de données.
- isColumnDate(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est DATE ;false
pour tous les autres types de données.
- isColumnNumber(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est l’un des types SQL numériques (NUMBER, NUMERIC, DECIMAL, INT, INTEGER, BIGINT, SMALLINT, TINYINT, BYTEINT, FLOAT, FLOAT4, FLOAT8, DOUBLE, DOUBLE PRECISION ou REAL) ;false
pour tous les autres types de données.
- isColumnObject(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est OBJECT (pour les données semi-structurées) ;false
pour tous les autres types de données.
- isColumnTime(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est TIME ou DATETIME ;false
pour tous les autres types de données.
- isColumnTimestamp(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est l’un des types d’horodatage SQL (TIMESTAMP, TIMESTAMP_LTZ, TIMESTAMP_NTZ ou TIMESTAMP_TZ) ;false
pour tous les autres types de données, y compris les autres types de données de date et d’heure (DATE, TIME ou DATETIME).
- isColumnVariant(colIdx)¶
- Renvoie:
true
si le type de données de la colonne est VARIANT (pour les données semi-structurées) ;false
pour tous les autres types de données.
Objet : ResultSet
¶
Cet objet contient les résultats renvoyés par une requête. Les résultats sont traités comme un ensemble de zéro ou plusieurs lignes, chacune contenant une ou plusieurs colonnes. Le terme « ensemble » n’est pas utilisé ici au sens mathématique. En mathématiques, un ensemble est non ordonné, alors qu’un ResultSet
a un ordre.
Un ResultSet
ressemble à certains égards au concept de curseur SQL. Par exemple, vous pouvez voir une ligne à la fois dans un ResultSet
, tout comme vous pouvez voir une ligne à la fois dans un curseur.
Généralement, après avoir récupéré un ResultSet
, vous le parcourez en répétant les opérations suivantes :
Appelez
next()
pour obtenir la ligne suivante.Récupérez les données de la ligne en cours en appelant des méthodes telles que
getColumnValue()
.
Si vous ne connaissez pas suffisamment les données du ResultSet
(par exemple, vous ne connaissez pas le type de données de chaque colonne), vous pouvez appeler d’autres méthodes fournissant des informations sur les données.
Certaines des méthodes de l’objet ResultSet
sont similaires à celles de l’objet Statement
. Par exemple, les deux objets ont une méthode getColumnSqlType(colIdx)
.
Constantes¶
Aucun.
Méthodes¶
- getColumnCount()
Cette méthode renvoie le nombre de colonnes de ce ResultSet.
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de colonnes.
- Erreurs:
Aucun.
- getColumnSqlType(colIdx|colName)
Cette méthode renvoie le type de données SQL de la colonne spécifiée.
- Paramètres:
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie:
Le type de données SQL de la colonne.
- Erreurs:
Lance une erreur JavaScript si :
ResultSet
est vide ounext()
n’a pas encore été appelé.Aucune colonne avec l’index ou le nom spécifié n’existe.
- getColumnValue(colIdx|colName)¶
Cette méthode renvoie la valeur d’une colonne de la ligne actuelle (c’est-à-dire la dernière ligne récupérée par
next()
).- Paramètres:
Soit le numéro d’index de la colonne (à partir de
1
, pas0
), soit le nom de la colonne. (La méthode est surchargée pour accepter différents types de données en tant que paramètres.)Le nom de la colonne doit être entièrement écrit en majuscules, sauf si des guillemets doubles ont été utilisés dans le nom de la colonne lors de la création de la table (autrement dit, la casse du nom de la colonne a été préservée).
- Renvoie:
La valeur de la colonne spécifiée.
- Erreurs:
Lance une erreur JavaScript si :
ResultSet
est vide ounext()
n’a pas encore été appelé.Aucune colonne avec l’index ou le nom spécifié n’existe.
- Exemples:
Convertissez une ligne de la base de données en un tableau JavaScript :
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 = []; }
La valeur d’une colonne est également accessible en tant que propriété de l’objet
ResultSet
(par exemple,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 = []; }
Note
N’oubliez pas que, à moins que le nom de la colonne ne soit délimité par des guillemets dans l’instruction CREATE TABLE, le nom de la colonne doit être tout en majuscules dans le code JavaScript.
- getColumnValueAsString(colIdx|colName)¶
Cette méthode renvoie la valeur d’une colonne sous forme de chaîne, ce qui est utile lorsque vous avez besoin d’une valeur de colonne, quel que soit le type de données d’origine dans la table.
La méthode est identique à la méthode
getColumnValue()
sauf qu’elle renvoie une valeur de chaîne.Pour plus de détails, voir
getColumnValue()
.
- getNumRowsAffected()
Cette méthode renvoie le nombre de lignes affectées (par exemple, insérées/mises à jour/supprimées) par l’instruction qui a généré ce ResultSet.
Si plus d’un type de changement s’applique (par exemple, une opération MERGE a inséré certaines lignes et en a mis d’autres à jour), alors le nombre est le nombre total de lignes affectées par tous les changements.
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes affectées.
- Erreurs:
Aucun.
- getQueryId()
Cette méthode renvoie le UUID de la dernière requête exécutée.
- Paramètres:
Aucun.
- Renvoie:
Une chaîne contenant un UUID, qui correspond à l’ID de la requête.
- Exemples:
var queryId = resultSet.getQueryId();
- getRowCount()
Cette méthode renvoie le nombre de lignes dans ce ResultSet. (Il s’agit du nombre total de lignes, et non du nombre de lignes qui n’ont pas encore été consommées).
- Paramètres:
Aucun.
- Renvoie:
Une valeur de type Nombre qui indique le nombre de lignes.
- Erreurs:
Aucun.
- next()¶
Cette méthode obtient la ligne suivante du
ResultSet
et la rend accessible.Cette méthode ne renvoie pas la nouvelle ligne de données. Au lieu de cela, elle rend la ligne disponible afin que vous puissiez appeler des méthodes telles que
ResultSet.getColumnValue()
pour récupérer les données.Notez que vous devez appeler
next()
pour chaque ligne du jeu de résultats, en incluant la première ligne.- Paramètres:
Aucun.
- Renvoie:
true
s’il a récupéré une ligne etfalse
s’il n’y a plus de lignes à récupérer.Ainsi, vous pouvez parcourir
ResultSet
jusqu’à ce quenext()
renvoie false.- Erreurs:
Aucun.
Objet : SfDate
¶
JavaScript n’a pas de type de données natif qui correspond aux types de données Snowflake SQL TIMESTAMP_LTZ, TIMESTAMP_NTZ et TIMESTAMP_TZ. Lorsque vous récupérez une valeur de type TIMESTAMP dans la base de données et souhaitez la stocker en tant que variable JavaScript (par exemple, pour copier la valeur d’un ResultSet dans une variable JavaScript), utilisez SfDate
du type de données JavaScript défini par Snowflake. Le type de données SfDate
(« date SnowFlake ») est une extension du type de données de date JavaScript. SfDate
propose des méthodes supplémentaires, décrites ci-dessous.
Constantes¶
Aucun.
Méthodes¶
Sauf indication contraire, les exemples ci-dessous tiennent compte du fuseau horaire UTC.
- getEpochSeconds()¶
Cette méthode renvoie le nombre de secondes écoulées depuis le début de « l’époque » (minuit, 1er janvier, 1970).
- Paramètres:
Aucun.
- Renvoie:
Nombre de secondes entre minuit, 1er janvier, 1970 et l’horodatage stocké dans la variable.
- Exemples:
Créez la procédure stockée :
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(); $$ ;
Transmettez les différents horodatages de procédure et récupérez le nombre de secondes écoulées depuis l’époque pour chaque horodatage.
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()¶
Cette méthode renvoie la valeur du champ nanosecondes de l’objet. Notez qu’il ne s’agit que de la fraction de seconde, et non des nanosecondes depuis le début de l’époque. Ainsi, la valeur est toujours comprise entre 0 et 999999999.
- Paramètres:
Aucun.
- Renvoie:
Le nombre de nanosecondes.
- Exemples:
Créez la procédure stockée :
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');
Transmettez les différents horodatages de procédure et récupérez le nombre de nanosecondes de chacun.
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()¶
Cette méthode renvoie la précision du type de données, c’est-à-dire le nombre de chiffres après le point décimal. Par exemple, la précision de TIMESTAMP_NTZ(3) est égale à 3 (millisecondes). La précision de TIMESTAMP_NTZ(0) est 0 (pas de fraction de seconde). La précision de TIMSTAMP_NTZ est 9 (nanosecondes).
Le minimum est 0. Le maximum est 9 (la précision est de 1 nanoseconde). La précision par défaut est 9.
- Paramètres:
Aucun.
- Renvoie:
Le nombre de chiffres après la décimale (nombre de chiffres dans le champ de secondes fractionnaires).
- Exemples:
Créez la procédure stockée :
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');
Dans cet exemple, l’horodatage est défini sur TIMESTAMP_NTZ(0), la précision est donc 0.
CALL test_get_scale('1970-01-01 00:00:00', '0'); +----------------+ | TEST_GET_SCALE | |----------------| | 0 | +----------------+
Dans cet exemple, l’horodatage est défini sur TIMESTAMP_NTZ(2), la précision est donc 2.
CALL test_get_scale('1970-01-01 00:00:01.123', '2'); +----------------+ | TEST_GET_SCALE | |----------------| | 2 | +----------------+
Dans cet exemple, l’horodatage est défini sur TIMESTAMP_NTZ. Par conséquent, la précision est 9, la valeur par défaut.
CALL test_get_scale('1971-01-01 00:00:00.000123456', '9'); +----------------+ | TEST_GET_SCALE | |----------------| | 9 | +----------------+
- getTimezone()¶
Cette méthode renvoie le fuseau horaire sous la forme du nombre de minutes avant ou après UTC.
- Paramètres:
Aucun.
- Renvoie:
Le fuseau horaire est indiqué en nombre de minutes avant ou après UTC.
- Exemples:
Créez la procédure stockée :
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(); $$ ;
Dans cet exemple, le fuseau horaire est de 8 heures (480 minutes) en retard par rapport à UTC.
CALL test_get_timezone('1970-01-01 00:00:01-08:00'); +-------------------+ | TEST_GET_TIMEZONE | |-------------------| | -480 | +-------------------+
Dans cet exemple, le fuseau horaire est de 11 heures (660 minutes) en avance par rapport à UTC.
CALL test_get_timezone('1971-01-01 00:00:00.000123456+11:00'); +-------------------+ | TEST_GET_TIMEZONE | |-------------------| | 660 | +-------------------+
- toString()¶
- Paramètres:
Aucun.
- Renvoie:
Cette méthode retourne une représentation sous forme de chaîne de l’horodatage.
- Exemples:
Cela montre un exemple simple de création de
SfDate
et d’appel de sa méthodetoString
: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)" | +------------------------------------------------------------------+