Service SQL IBM i (AS/400) · Fonction table
QSYS2.RECEIVE_DATA_QUEUE
Lire une entrée de file de données
Lit, et par défaut retire, une entrée d'une file de données (*DTAQ), avec attente et recherche par clé facultatives : la réception d'une file de données en SQL.
À quoi ça sert
Cette fonction de table reçoit un message d'une file de données, comme le fait un programme avec l'API de réception. Elle renvoie les données du message en caractères (MESSAGE_DATA), en UTF-8 (MESSAGE_DATA_UTF8) et en binaire (MESSAGE_DATA_BINARY), ainsi que la clé et l'identité de l'émetteur (SENDER_JOB_NAME, SENDER_CURRENT_USER).
Les paramètres DATA_QUEUE et DATA_QUEUE_LIBRARY désignent la file (bibliothèque *LIBL par défaut). REMOVE vaut YES par défaut : l'entrée est alors retirée de la file. WAIT_TIME fixe le temps d'attente, KEY_DATA et KEY_ORDER permettent de ne lire que les entrées dont la clé correspond, pour une file à clé.
Elle est utile pour tester ou dépanner une file de données depuis une session SQL, ou pour consommer des messages depuis un langage qui ne dispose pas d'API native. Le pendant côté émission est QSYS2.SEND_DATA_QUEUE.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
CALL QSYS2.SEND_DATA_QUEUE(MESSAGE_DATA => 'Message lu puis retiré par RECEIVE_DATA_QUEUE', DATA_QUEUE => 'DEMODQ2', DATA_QUEUE_LIBRARY => 'JOBISQL');
SELECT * FROM TABLE(QSYS2.RECEIVE_DATA_QUEUE(DATA_QUEUE => 'DEMODQ2', DATA_QUEUE_LIBRARY => 'JOBISQL')) X
Ce que l'IBM i a renvoyé le 01/10/2026 (1 ligne au plus) :
| MESSAGE_DATA Données du message | MESSAGE_DATA_UTF8 Données du message au format UTF-8 | MESSAGE_DATA_BINARY Données du message au format binaire | KEY_DATA Données de la clé | SENDER_JOB_NAME Nom du travail émetteur | SENDER_CURRENT_USER Utilisateur courant de l'émetteur |
|---|---|---|---|---|---|
| Message lu puis retiré par RECEIVE_DATA_QUEUE | ԅ??@??@Ńʼn六āねؤŤ� | D485A2A28187854093A44097A489A2409985A38999C04097819940D9C5C3C5C9E5C56DC4C1E3C16DD8E4C5E4C5 | NULL | NULL | NULL |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Récupérer le message de la file de données DQ1 de la bibliothèque TESTLIB dont la clé vaut 456.
-- Description: Get the message from data queue DQ1 in TESTLIB with key 456.
SELECT * FROM TABLE(QSYS2.RECEIVE_DATA_QUEUE('DQ1', 'TESTLIB',
KEY_DATA => '456', KEY_ORDER => 'EQ'));
Bon à savoir
Avec REMOVE à YES, la lecture est destructive : l'entrée disparaît de la file. Pour seulement consulter le contenu sans le consommer, passez REMOVE à NO ou utilisez QSYS2.DATA_QUEUE_ENTRIES.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
DATA_QUEUE |
VARCHAR(10) | obligatoire | Nom de la file de données |
DATA_QUEUE_LIBRARY |
VARCHAR(10) | '*LIBL' | Bibliothèque de la file de données |
REMOVE |
VARCHAR(3) | 'YES' | Retirer l'entrée |
WAIT_TIME |
DECIMAL(8, 3) | 0 | Temps d'attente |
KEY_DATA |
VARCHAR(256) | NULL | Données de la clé |
KEY_ORDER |
CHAR(2) | NULL | Ordre de comparaison de la clé |
Colonnes renvoyées (6)
Afficher les 6 colonnes
| Colonne | Type | Signification |
|---|---|---|
MESSAGE_DATA |
CHAR LARGE OBJECT | Données du message |
MESSAGE_DATA_UTF8 |
CHAR LARGE OBJECT | Données du message au format UTF-8 |
MESSAGE_DATA_BINARY |
BINARY LARGE OBJECT | Données du message au format binaire |
KEY_DATA |
VARCHAR(256) | Données de la clé |
SENDER_JOB_NAME |
VARCHAR(28) | Nom du travail émetteur |
SENDER_CURRENT_USER |
VARCHAR(10) | Utilisateur courant de l'émetteur |