FirebirdSQL logo

MAKE_DBKEY()

Disponible en

DSQL, PSQL

Syntaxe
MAKE_DBKEY (<relation>, recnum [, dpnum [, ppnum]]})

<relation> ::= rel_name | rel_id
Table 1. paramètres de fonction MAKE_DBKEY
Paramètre Description

rel_name

Nom de la table.

rel_id

ID de la table. Peut être trouvé dans `RDB$RELATIONS.RDB$RELATION_ID'.

recnum

Numéro d’enregistrement, soit absolu (si dpnum et ppnum sont absents), soit relatif (si dpnum est présent).

dpnum

Numéro de page des données DP, soit absolu (si ppnum est absent), soit relatif (si ppnum est présent).

ppnum

Numéro de page des pointeurs vers les données PP.

La fonction MAKE_DBKEY crée une valeur DBKEY en utilisant le nom ou l’identifiant de la table, le numéro d’enregistrement et, en option, un numéro de page de données logique et un numéro de page de pointeur.

Note
Remarques
  1. Si le premier argument (table) est une expression ou un littéral, il est traité comme un nom de table et Firebird recherche l’identifiant de la table correspondante. La recherche est sensible à la casse.

    Dans le cas d’un littéral de type chaîne, l’identifiant de la table est évalué lors de la préparation.Dans le cas d’une expression, l’ID de la table est évalué au moment de l’exécution.

    Si la table est introuvable, une erreur isc_relnotdef se produit.

  2. Si le premier argument (table) est une expression numérique ou un littéral, il est traité comme un identifiant de table et utilisé "tel quel", sans vérifier si la table existe.

    Si la valeur de l’argument est négative ou dépasse l’identifiant de table maximum autorisé (actuellement 65535), NULL est retourné.

  3. Le deuxième argument (recnum) est le numéro d’enregistrement absolu par rapport à (si les arguments suivants — dpnum et ppnum — sont manquants) ou le numéro d’enregistrement relatif au premier enregistrement spécifié dans les arguments suivants.

  4. Le troisième argument (dpnum) est le numéro de page de données logique (DP) dans la table (si l’argument suivant — ppnum — est absent) ou le numéro de page de données relatif à la première page de données adressée par le ppnum donné.

  5. Le quatrième argument (ppnum) — est le numéro de page de l’index logique (PP) dans la table.

  6. Tous les nombres commencent par zéro. La valeur maximale autorisée pour dpnum et ppnum est 232 (4294967296).

    Si dpnum est spécifié, la valeur de recnum peut être négative.

    Si dpnum est manquant et que recnum est négatif, NULL est retourné.

    Si ppnum est spécifié, dpnum peut être négatif.

    Si ppnum est manquant et que dpnum est négatif, NULL est retourné.

  7. Si l’un des arguments spécifiés est NULL, le résultat est également NULL.

  8. Le premier argument (table) est décrit comme INTEGER, mais peut être remplacé par l’application comme VARCHAR ou CHAR.

    recnum, dpnum et ppnum sont décrits comme BIGINT (entier signé de 64 bits).

Exemple:
  1. La requête sélectionne un enregistrement en utilisant le nom de la table (nom de la table en majuscules).

    select * from rdb$relations where rdb$db_key = make_dbkey('RDB$RELATIONS', 0)
  2. La requête sélectionne un enregistrement en utilisant l’identifiant de la table

    select * from rdb$relations where rdb$db_key = make_dbkey(6, 0)
  3. La requête sélectionne tous les enregistrements qui sont physiquement sur la première page des données dans la table

    select * from rdb$relations
    where rdb$db_key >= make_dbkey(6, 0, 0)
      and rdb$db_key <  make_dbkey(6, 0, 1)
  4. La requête sélectionne tous les enregistrements qui sont physiquement sur la première page de données de la page d’index 6 dans la table

    select * from SOMETABLE
    where rdb$db_key >= make_dbkey('SOMETABLE', 0, 0, 5)
      and rdb$db_key <  make_dbkey('SOMETABLE', 0, 1, 5)

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
...