[QR] Comment avoir le numéro d'enregistrement à l'intérieur d'un ensemble de données ?
Parfois vous devez fournir une requête SQL à un outil tiers ou à un composant, en souhaitant qu'elle renvoie le numéro de chaque ligne. Bien que cela soit facilement faisable via une variable temporaire dans une procédure stockée ou en utilisant un EXECUTE BLOCK, vous pouvez souhaiter cette numérotation au titre d'un simple SELECT .
Les variables de contexte de Firebird peuvent faire le travail pour vous . Voici une manière de faire proposée par Fabiano Bonin. Cet exemple montre toutes les tables et vues de la base de données :
Exemple pour les bases de données en Dialect 3 :
Code :
SELECT
rdb$get_context('USER_TRANSACTION', 'row#') AS row_number,
rdb$set_context('USER_TRANSACTION', 'row#',
COALESCE(cast(rdb$get_context('USER_TRANSACTION', 'row#') AS integer), 0) + 1),
a.rdb$relation_name
FROM rdb$relations a
ORDER BY a.rdb$relation_name
Exemple pour les bases de données en Dialect 1 :
Code :
SELECT
rdb$get_context('USER_TRANSACTION', 'row#') AS row_number,
rdb$set_context('USER_TRANSACTION', 'row#',
COALESCE(rdb$get_context('USER_TRANSACTION','row#'),0) + 1),
a.rdb$relation_name
FROM rdb$relations a
ORDER BY a.rdb$relation_name
l'exemple pour le Dialect 1 est une contribution de Serge Girard du site developpez.net.
Traduction réalisée depuis
http://www.firebirdfaq.org/faq343/
Partager