Aller au contenu

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ètreTypePar défautSignification
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
ColonneTypeSignification
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