FirebirdSQL logo

CURRENT_ROLE

Disponible en

DSQL, PSQL

Syntaxe
CURRENT_ROLE
type de résultat de retour

VARCHAR(63)

Une variable de contexte CURRENT_ROLE contenant le nom du rôle qui a été spécifié lors de la connexion à la base de données, ou le rôle défini avec l’opérateur SET ROLE.Dans le cas où une connexion s’est produite sans spécifier de rôle, et que le rôle n’a pas été spécifié plus tard en utilisant l’opérateur SET ROLE, la variable prend la valeur NONE.

CURRENT_ROLE représente toujours un rôle valide ou NONE. Si un utilisateur se connecte avec un rôle inexistant,le noyau le réinitialise silencieusement à NONE sans retourner d’erreur.

Note

La variable de contexte CURRENT_ROLE ne contient que le nom du rôle explicitement défini (à l’ouverture de session ou avec SET ROLE), les rôles implicitement définis (émis par l’instruction GRANT utilisant le mot-clé DEFAULT) ne seront pas inclus. Pour savoir si l’utilisateur actuel utilise un rôle implicitement défini, utilisez la fonction du système RDB$ROLE_IN_USE().

Example 1. Utilisation d’une variable CURRENT_ROLE
SELECT CURRENT_ROLE FROM RDB$DATABASE
Note

La même valeur sera également disponible en tant que résultat de la requête :

SELECT RDB$GET_CONTEXT ('SYSTEM', 'CURRENT_ROLE')
FROM RDB$DATABASE;

CURRENT_TIME

Disponible en

DSQL, PSQL, ESQL

Syntaxe
CURRENT_TIME [(<precision>)]

<precision> ::= 0 | 1 | 2 | 3
Table 1. Contexte Paramètres de la variable CURRENT_TIME
Paramètre Description

precision

Précision. La valeur par défaut est 0. Non supporté dans ESQL.

type de résultat de retour

TIME WITH TIME ZONE

La variable CURRENT_TIME renvoie l’heure actuelle dans le fuseau horaire de la session, y compris les informations sur le fuseau horaire. La précision détermine le nombre de décimales à considérer dans les fractions de seconde. La précision par défaut est 0.

Note

Dans un bloc de code PSQL (procédure, trigger, bloc exécutable), la valeur de CURRENT_TIME ne change pas au cours de son exécution. Lors de l’appel de code imbriqué, la valeur ne changera pas non plus et sera égale à la valeur du code de niveau supérieur. Utilisez CAST('NOW' AS TIME) pour définir le temps réel.

Example 1. Utilisation d’une variable CURRENT_TIME
SELECT CURRENT_TIME(2) FROM RDB$DATABASE;
-- le résultat sera (par exemple) 23:35:33.1200 Europe/Moscow

docnext count = 5

CURRENT_TIMESTAMP

Disponible en

DSQL, PSQL, ESQL

Syntaxe
CURRENT_TIMESTAMP [(<precision>)]

<precision> ::= 0 | 1 | 2 | 3
Table 1. Contexte Paramètres de la variable CURRENT_TIMESTAMP
Paramètre Description

precision

Précision. La valeur par défaut est 3. Non supporté dans ESQL.

type de résultat de retour

TIMESTAMP WITH TIME ZONE

La variable CURRENT_TIMESTAMP renvoie la date et l’heure actuelles dans le fuseau horaire de la session, y compris les informations sur le fuseau horaire. La précision détermine le nombre de décimales en fractions de seconde à prendre en compte. La précision par défaut est de 3.

Note

Dans un bloc de code PSQL (procédure, trigger, bloc exécutable), la valeur de CURRENT_TIMESTAMP ne change pas au cours de son exécution. Lors de l’appel d’un code imbriqué, la valeur ne change pas non plus et est égale à la valeur du code de niveau supérieur. Utilisez CAST('NOW' AS TIMESTAMP) pour définir le temps réel.

Example 1. Utilisation d’une variable CURRENT_TIMESTAMP
SELECT CURRENT_TIMESTAMP(2) FROM RDB$DATABASE;
-- le résultat sera (par exemple) 02.03.2014 23:35:33.1200 Europe/Moscow

CURRENT_TRANSACTION

Disponible en

DSQL, PSQL

Syntaxe
CURRENT_TRANSACTION
type de résultat de retour

BIGINT

La variable CURRENT_TRANSACTION contient un numéro unique pour la transaction en cours.

La valeur de CURRENT_TRANSACTION est ``stockée dans la page d’en-tête de la base de données et remise à 0 lorsque la base est restaurée (ou créée). Il est incrémenté lorsqu’une nouvelle transaction est lancée.

Example 1. Utilisation d’une variable CURRENT_TRANSACTION
SELECT CURRENT_TRANSACTION FROM RDB$DATABASE;

NEW.TRANS_ID = CURRENT_TRANSACTION;

CURRENT_USER

Disponible en

DSQL, PSQL

Syntaxe
CURRENT_USER
type de résultat de retour

VARCHAR(63)

La variable CURRENT_USER contient le nom de l’utilisateur de la base de données actuellement connecté.

Example 1. Utilisation d’une variable CURRENT_USER
NEW.ADDED_BY = CURRENT_USER;

DELETING

Disponible en

PSQL

Syntaxe
DELETING
type de résultat de retour

BOOLEAN

La variable contextuelle DELETING est uniquement disponible dans le code des triggers de table. Elle est utilisée dans les triggers pour plusieurs types d’événements et indique que le trigger a été déclenché lorsque l’opération DELETE est exécutée.

Example 1. Utilisation d’une variable DELETING
...
IF (DELETING) THEN
BEGIN
  INSERT INTO REMOVED_CARS (
    ID, MAKE, MODEL, REMOVED)
  VALUES (
    OLD.ID, OLD.MAKE, OLD.MODEL, CURRENT_TIMESTAMP);
END
...

GDSCODE

Disponible en

PSQL

Syntaxe
GDSCODE
type de résultat de retour

INTEGER

Dans le bloc de gestion des erreurs WHEN …​ DO la variable contextuelle GDSCODE contient une représentation numérique du code d’erreur actuel de Firebird.Avant Firebird 2.0, GDSCODE ne pouvait être récupéré qu’en utilisant la construction WHEN GDSCODE.Maintenant, cette variable contextuelle peut aussi être utilisée dans les blocs WHEN ANY, WHEN SQLCODE et WHEN EXCEPTION, tant que le code d’erreur correspond au code d’erreur de Firebird.En dehors du gestionnaire d’erreur, GDSCODE est toujours 0.En dehors de PSQL, GDSCODE n’existe pas du tout.

Example 1. Utilisation d’une variable GDSCODE
...
WHEN GDSCODE GRANT_OBJ_NOTFOUND,
     GDSCODE GRANT_FLD_NOTFOUND,
     GDSCODE GRANT_NOPRIV,
     GDSCODE GRANT_NOPRIV_ON_BASE
DO
BEGIN
  EXECUTE PROCEDURE LOG_GRANT_ERROR(GDSCODE);
  EXIT;
END
...
Note

Attention : après, WHEN GDSCODE vous devez utiliser des noms symboliques — comme grant_obj_notfound etc. Mais la variable de contexte GDSCODE est un entier. Vous devez utiliser une valeur numérique pour la comparer à une erreur particulière, comme 335544551 pour grant_obj_notfound.