문제

Oracle Advanced 대기열의 JMS OP Top을 사용하는 응용 프로그램이 있습니다. 메시지의 내용을 표시하는 큐 테이블에서 쿼리를 작성하고 싶습니다 (내 경우 XML). 따라서 [queue_table]에서 'select user_data를 선택하면'aq sys.aq $ _jms_text_message '를 응답으로 얻습니다.

이 메시지의 내용을 표시 할 수 있도록 함수가 있습니까? [queue_table]에서 'select function (user_data)'또는 뭔가?

나는 큐잉에 관한 수많은 오라클 기사를 스캔했지만, 이것을 찾을 수는 없습니다. 나는 이것을하는 간단한 방법이 있다고 생각하지만 그것을 찾을 수는 없습니다.

도움이 되었습니까?

해결책

나는 이것도 고투했다. 여기에 답을 썼습니다. http://rwijk.blogspot.com/2009/02/whats-in-my-jms-queue.html .

안부, Rob.

다른 팁

그래서 나는 그것이 다음과 같다고 생각합니다.

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

나는 당신이 사용할 수 있고 고려해야 할 것 같아요 coalesce 대신에 nvl, 그것 때문에 두 번째 인수를 평가하지 않습니다, 첫 번째 것이 이미 다른 경우 null, 그러나 나는 아직 그것을 테스트하지 않았습니다.

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를 선택하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top