Fonctions contextuelles

Cette famille de fonctions permet de collecter des informations sur le contexte dans lequel l’instruction est exécutée. Ces fonctions sont évaluées au maximum une fois par instruction.

Liste de fonctions

Notes sur l’utilisation

  • Les fonctions contextuelles ne nécessitent généralement pas d’arguments (sauf pour SYS_CONTEXT).

  • Pour se conformer aux normes ANSI, les fonctions contextuelles suivantes peuvent être appelées sans parenthèses dans les instructions SQL :

    • CURRENT_DATE

    • CURRENT_TIME

    • CURRENT_TIMESTAMP

    • CURRENT_USER

    • LOCALTIME

    • LOCALTIMESTAMP

    Note

    Si vous définissez une variable Snowflake Scripting sur une expression qui appelle l’une de ces fonctions (par exemple, my_var := <function_name>();), vous devez inclure les parenthèses.

Exemples

Affichez l’entrepôt virtuel, la base de données et le schéma actuels pour la session :

SELECT CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA();
+---------------------+--------------------+------------------+
| CURRENT_WAREHOUSE() | CURRENT_DATABASE() | CURRENT_SCHEMA() |
|---------------------+--------------------+------------------+
| MY_WAREHOUSE        | MY_DB              | PUBLIC           |
|---------------------+--------------------+------------------+

Affichez la date, l’heure et l’horodatage actuels (notez que les parenthèses ne sont pas nécessaires pour appeler ces fonctions) :

SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
+--------------+--------------+-------------------------------+
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP             |
|--------------+--------------+-------------------------------|
| 2024-06-07   | 10:45:15     | 2024-06-07 10:45:15.064 -0700 |
+--------------+--------------+-------------------------------+

Dans un bloc Snowflake Scripting, appelez la fonction CURRENT_DATE sans parenthèses pour définir une variable dans une instruction SQL :

EXECUTE IMMEDIATE
$$
DECLARE
  currdate DATE;
BEGIN
  SELECT CURRENT_DATE INTO currdate;
  RETURN currdate;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07      |
+-----------------+

Dans un bloc Snowflake Scripting, essayer de définir une variable sur une expression qui appelle la fonction CURRENT_DATE sans parenthèses génère une erreur :

EXECUTE IMMEDIATE
$$
DECLARE
  today DATE;
BEGIN
  today := CURRENT_DATE;
  RETURN today;
END;
$$
;
000904 (42000): SQL compilation error: error line 5 at position 11
invalid identifier 'CURRENT_DATE'

Le même bloc renvoie la date actuelle lorsque la fonction est appelée avec les parenthèses :

EXECUTE IMMEDIATE
$$
DECLARE
  today DATE;
BEGIN
  today := CURRENT_DATE();
  RETURN today;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07      |
+-----------------+