programing

Oracle AQ SYS의 내용을 표시합니다.AQ$_JMS_TEXT_MESSAGE

codeshow 2023. 10. 24. 21:38
반응형

Oracle AQ SYS의 내용을 표시합니다.AQ$_JMS_TEXT_MESSAGE

오라클 고급 큐잉의 JMS optop을 사용하는 어플리케이션이 있습니다.메시지의 내용을 보여주는 큐 테이블에 대한 쿼리를 수행하고 싶습니다(제 경우에는 XML입니다).그래서 '[queue_table]에서 user_data 선택'을 할 때전 'AQ SYS'를 받습니다.응답으로 'AQ$_JMS_TEXT_MESSAGE'를 선택합니다.

이 메시지의 내용을 보여줄 수 있는 기능이 있습니까?[queue_table]에서 기능(user_data)을 선택하세요' 같은 것?

구글에서 큐잉에 관한 수많은 오라클 기사를 검색했지만 찾을 수가 없습니다.간단한 방법이 있는 것 같은데 찾을 수가 없네요.

이것도 고생했어요.저는 여기에 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그렇지 않은 경우)

크기에 관계없이 모든 데이터를 표시하려면 다음과 같은 쿼리를 사용할 수 있습니다.

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

사용할 수도 있고 고려해야 할 것 같습니다.nvl, 그것은 두번째 주장을 평가하지 않기 때문에, 만약 첫번째 주장이 이미 다른 경우에null, 아직 테스트 안 해봤어요

stuXnet의 코멘트에 추가:

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

to_clob이 없으면 VARCHAR2만인 첫 번째 인수의 공간을 보존하므로 4000자보다 큰 데이터에 대해 ORA-22835를 얻을 수 있습니다.

다음 명령을 시도해 보십시오.

[ queue_table] name에서 user_data 선택

언급URL : https://stackoverflow.com/questions/1020165/display-contents-of-oracle-aq-sys-aq-jms-text-message

반응형