2009-06-19 14 views
11

Oracle Advanced QueuingのJMS opを使用するアプリケーションを使用しています。私はメッセージの内容を表示するキューテーブル(私の場合はXMLです)でクエリを実行したいと思います。だから、私が '[queue_table]からuser_dataを選択すると' AQ SYS.AQ $ _JMS_TEXT_MESSAGE 'を返信します。

このメッセージの内容を表示できる機能はありますか?何か '[queue_table]からのFUNCTION(user_data)の選択'なんか?

私はグーグルで、キューイングに関する多数のオラクルの記事をスキャンしましたが、私はこれを見つけることができません。私はこれを行う簡単な方法があると思うが、私はそれを見つけることができない。

答えて

10

私はこれも苦労しました。私はここに答えを書いた:http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.html

よろしく、 ロブ。

+1

「queue.user_data.text_vcを[queue_table]キューから選択」 私はここで答えを追加したので、問題の解決策としてその答えを促進することができます。 –

+1

私は、大きなテキストがtext_vcの代わりにqueue.user_data.text_lobに格納されていることを発見しました –

4

だから私はそれがあるべきとします

select queue.user_data.text_vc from [queue_table] queue 
+1

まさに。 user_data.text_vcの前に別名またはtable_nameを使用する必要があります。それ以外の場合は、text_vcという関数を含むuser_dataパッケージが検索され、エラー・メッセージORA-00904: "USER_DATA"。 "TEXT_VC":無効な識別子 –

0

次のコマンドを実行してみてください。

選択したuser_data [QUEUE_TABLE]名前からここ

+1

質問はすでに2年前に回答済みです。 –

1

の答えは、より大きなの表示を処理しません。内容はuser_data.text_lobに保存されています。 コンテンツは(4000?)バイトの一定量よりも大きい場合、text_vcnullになり、あなたはすべてのデータを表示するためには(そうでない場合はnullされるであろう)text_lob

を見ているにかかわらず、それは大きさですが、あなたはnvlを使用して次のクエリを使用することができます。

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

を、私は、あなたが(とに検討すべきである)nvlの代わりにcoalesceを使用することができると思い、それdoesn't evaluate the second argumentので、最初のものはにすでに異なる場合しかし、私はまだその1つをテストしていません。 Stuxnetののコメントに

1

追加:TO_CLOBなし

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

それが唯一のVARCHAR2で最初の引数のスペースを保持するので、あなたは、4000文字を超えるデータのORA-22835を取得します。

関連する問題