FirebirdSQL logo

RDB$ERROR()

Disponible en

PSQL

Syntaxe
RDB$ERROR (<context>)

<context> ::= GDSCODE | SQLCODE | SQLSTATE | EXCEPTION | MESSAGE
type de résultat de retour

Cela dépend du contexte

Renvoie la valeur du contexte de l’exception active. Le type de retour dépend du contexte.

Note

La fonction RDB$ERROR renvoie toujours NULL en dehors du bloc de gestion des erreurs. WHEN …​ DO.

Contextes disponibles comme argument de la fonction RDB$ERROR :

EXCEPTION

La fonction renvoie un nom d’exception si une exception définie par l’utilisateur est active, ou NULL si une des exceptions du système est active.Pour le contexte EXCEPTION, le type de valeur de retour : VARCHAR(63) JEU DE CARACTÈRES UTF8.

MESSAGE

la fonction retourne le texte interprété d’une exception active.Pour le contexte MESSAGE, le type de valeur de retour : VARCHAR(1024) JEU DE CARACTÈRES UTF8.

GDSCODE

la fonction retourne la valeur de la variable contextuelle GDSCODE.

SQLCODE

la fonction retourne la valeur de la variable contextuelle SQLCODE.

SQLSTATE

la fonction retourne la valeur de la variable de contexte SQLSTATE.

Example 1. Utilisation de la fonction RDB$ERROR pour sauvegarder le texte de l’erreur dans le journal de bord
...
BEGIN
...
WHEN ANY DO
  EXECUTE PROCEDURE P_LOG_EXCEPTION(RDB$ERROR(MESSAGE));
END
...

RDB$GET_TRANSACTION_CN()

Disponible en

DSQL, PSQL

Syntaxe
RDB$GET_TRANSACTION_CN (transaction_id)
Table 1. paramètres de fonction RDB$GET_TRANSACTION_CN
Paramètre Description

transaction_id

Numéro de transaction (identifiant)

Le type de résultat renvoyé :

BIGINT

Renvoie le numéro d’engagement pour une transaction donnée.

Note

Les mécanismes internes de Firebird utilisent un entier non signé de 8 octets pour le Commit Number et un entier non signé de 6 octets pour le numéro de transaction. Par conséquent, même si le langage SQL n’a pas d’entiers non signés, et que RDB$GET_TRANSACTION_CN renvoie un BIGINT signé, vous ne pouvez pas voir un numéro de confirmation négatif, sauf pour quelques valeurs spéciales utilisées pour les transactions non confirmées.

Si la fonction RDB$GET_TRANSACTION_CN renvoie une valeur supérieure à 1, il s’agit du (Commit Number) réel de la transaction, c’est-à-dire que la transaction a été validée après le démarrage de la base de données.

Dans d’autres cas, la fonction peut renvoyer l’un des résultats suivants indiquant l’état de validation de la transaction :

-2

transactions mortes (annulées) ;

-1

Transactions suspendues (en état de limbo 2PC transactions) ;

 0

transactions actives ;

 1

pour les transactions validées avant le démarrage de la base de données ou avec un numéro inférieur à OIT (Oldest Interesting Transaction) ;

NULL

: Si le numéro de transaction est NULL ou supérieur à Transaction suivante.

Example 1. Utilisation de RDB$GET_TRANSACTION_CN
select rdb$get_transaction_cn(current_transaction) from rdb$database;

select rdb$get_transaction_cn(123) from rdb$database;
Fonction

Retourne le numéro de commit de la transaction donnée. Le type de résultat est BIGINT.

Note
Remarques :
le moteur utilise en interne des entiers non signés de 8 octets pour les numéros de commit, et des entiers non signés de 6 octets pour les numéros de transaction. Ainsi, malgré que le langage SQL n'ait pas d'entiers non signés et que RDB$GET_TRANSACTION_CN retourne BIGINT signés, il est impossible de voir des nombres de commit négatifs à l'exception des quelques valeurs spéciales utilisées pour les transactions non commises.
En résumé, les nombres retournés par RDB$GET_TRANSACTION_CN peuvent avoir les valeurs suivantes :
-2 - la transaction est morte (annulée)
-1 - la transaction est dans les limbes
 0 - la transaction est active,
 1 - la transaction a été effectuée avant le démarrage de la base de données ou moins que la base de données.
	 Transaction intéressante la plus ancienne
>1 - transaction effectuée après le démarrage de la base de données
NULL - le numéro de transaction donné est NULL ou supérieur à celui de la base de données Next Transaction (Transaction suivante)
Voir aussi README.read_consistency.md

Format : RDB$GET_TRANSACTION_CN( <numéro de transaction> )

Exemples :

	select rdb$get_transaction_cn(current_transaction) from rdb$database ;
	select rdb$get_transaction_cn(123) from rdb$database ;
Note

Pour plus d’informations sur le Commit Number, reportez-vous aux Firebird 4.0 Release Notes.

RDB$ROLE_IN_USE()

Disponible en

DSQL, PSQL

Syntaxe
RDB$ROLE_IN_USE (role_name)
Table 1. paramètres de fonction RDB$ROLE_IN_USE
Paramètre Description

role_name

Le nom du rôle dont l’utilisation est contrôlée.

type de résultat de retour

BOOLEAN

La fonction RDB$ROLE_IN_USE retourne si le rôle est utilisé par l’utilisateur actuel.

Note

Cette fonction vous permet de vérifier l’utilisation de n’importe quel rôle : ceux spécifiés explicitement (lors de la connexion ou modifiés à l’aide de l’instruction SET ROLE) et ceux attribués implicitement (rôles attribués à un utilisateur à l’aide de la clause DEFAULT).

Example 1. Utilisation de la fonction RDB$ROLE_IN_USE
-- Vérifier si l'attribut explicitement attribué ou
-- rôle de MANAGER obtenu implicitement
IF (RDB$ROLE_IN_USE('MANAGER')) THEN
BEGIN
  ...
END
Example 2. Liste des rôles utilisés par la connexion actuelle
SELECT * FROM RDB$ROLES WHERE RDB$ROLE_IN_USE(RDB$ROLE_NAME)
Voir aussi :

GRANT ROLE, SET ROLE, CURRENT_ROLE.

RDB$SYSTEM_PRIVILEGE()

Disponible en

DSQL, PSQL

Syntaxe
RDB$SYSTEM_PRIVILEGE (<privilege>)
Table 1. paramètres de fonction RDB$SYSTEM_PRIVILEGE
Paramètre Description

privilege

Privilège système vérifiable

type de résultat de retour

BOOLEAN

La fonction RDB$SYSTEM_PRIVILEGE utilise le privilège système de la connexion actuelle. Pour obtenir une liste des privilèges système, consultez la rubrique CREATE ROLE.

Example 1. Utilisation de la fonction RDB$SYSTEM_PRIVILEGE
SELECT RDB$SYSTEM_PRIVILEGE(USER_MANAGEMENT) FROM RDB$DATABASE;
Voir aussi :

CREATE ROLE.