Question

J'ai une application qui utilise JMS dans la file d'attente avancée d'Oracle. Je voudrais faire une requête sur la table de file d'attente qui montre le contenu du message (qui dans mon cas est XML). Ainsi, lorsque je fais une 'sélection de données utilisateur dans [table_routes]', je reçois 'AQ SYS.AQ $ _JMS_TEXT_MESSAGE' en réponse.

Existe-t-il une fonction permettant d'afficher le contenu de ce message? Quelque chose comme "sélectionnez FUNCTION (user_data)" dans [queue_table] "ou quelque chose de ce genre?

J'ai cherché sur Google, scanné de nombreux articles Oracle sur la file d'attente, mais je ne trouve pas cette chose. Je pense qu’il existe un moyen simple de le faire, mais je ne le trouve pas.

Était-ce utile?

La solution

J'ai eu du mal avec celui-ci aussi. J'ai écrit une réponse ici: http: // rwijk .blogspot.com / 2009/02 / whats-in-my-jms-queue.html .

Cordialement, Rob.

Autres conseils

Donc je suppose que ça devrait être:

select queue.user_data.text_vc from [queue_table] queue

Les réponses ici ne gèrent pas l'affichage de contenus plus volumineux, stockés dans user_data.text_lob . Si le contenu dépasse un certain nombre d’octets (4000?), text_vc sera null et vous devez consulter text_lob (qui serait null sinon)

Pour afficher toutes les données, quelle que soit leur taille, vous pouvez utiliser la requête suivante à l'aide de nvl :

SELECT nvl (q.user_data.text_vc, q.user_data.text_lob) FROM [table_liste] q

Je suppose que vous pourriez (et devriez envisager d'utiliser) coalesce au lieu de nvl , car il ne le fait pas. évalue le deuxième argument , si le premier est déjà différent de null , mais je ne l'ai pas encore testé.

Ajout au commentaire de stuXnet:

SELECT nvl(to_clob(q.user_data.text_vc), q.user_data.text_lob) FROM queue_table q; 

sans to_clob, vous obtiendrez ORA-22835 pour les données de plus de 4000 caractères car il conserve l'espace du premier argument, qui n'est que VARCHAR2.

Veuillez essayer la commande suivante:

sélectionnez les données utilisateur à partir du nom [table_file]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top