Oracle AQ SYS.AQ $ _JMS_TEXT_MESSAGEの内容を表示します
-
06-07-2019 - |
質問
JMS op top Oracle Advanced Queueingを使用するアプリケーションがあります。メッセージの内容(私の場合はXML)を示すキューテーブルでクエリを実行したいと思います。したがって、「[queue_table]からuser_dataを選択」を行うと、応答として「AQ SYS.AQ $ _JMS_TEXT_MESSAGE」が返されます。
このメッセージの内容を表示できるようにする機能はありますか? 「select FUNCTION(user_data)from [queue_table]」などのようなものですか?
キューイングに関する多数のOracleの記事をGoogleでスキャンしましたが、これは見つかりません。これを行う簡単な方法があると思いますが、見つけられません。
解決
これにも苦労しました。ここに答えを書きました: http:// rwijk .blogspot.com / 2009/02 / whats-in-my-jms-queue.html 。
よろしく、 ロブ。
他のヒント
だから、次のようにすべきだと思う:
select queue.user_data.text_vc from [queue_table] queue
ここでの回答は、 user_data.text_lob
に保存されているより大きなコンテンツの表示を処理しません。
コンテンツが特定のバイト数(4000?)よりも大きい場合、 text_vc
は null
になり、 text_lob
(これはそれ以外の場合は null
になります)
サイズに関係なくすべてのデータを表示するには、 nvl
:
SELECT nvl(q.user_data.text_vc、q.user_data.text_lob)FROM [queue_table] q
しない最初の引数がすでに null
と異なる場合、2番目の引数を評価しますが、まだテストしていません。
stuXnetのコメントへの追加:
SELECT nvl(to_clob(q.user_data.text_vc), q.user_data.text_lob) FROM queue_table q;
to_clobを指定しないと、4000文字を超えるデータに対してORA-22835が取得されます。これは、VARCHAR2のみである最初の引数のスペースを保持するためです。
次のコマンドを試してください:
[queue_table]名からuser_dataを選択します