我有一个Oracle AQ,队列类型为SYS.AQ $ _JMS_TEXT_MESSAGE.我想要做的是从java应用程序中将文本插入到提到的队列中.
等效的SQL查询是
declare r_enqueue_options DBMS_AQ.ENQUEUE_OPTIONS_T; r_message_properties DBMS_AQ.MESSAGE_PROPERTIES_T; v_message_handle RAW(16); o_payload SYS.AQ$_JMS_TEXT_MESSAGE; begin o_payload := sys.aq$_jms_text_message.construct; o_payload.set_text(xmltype('text ').getClobVal()); sys.dbms_aq.enqueue ( queue_name => 'QUEUE_NAME', enqueue_options => r_enqueue_options, message_properties => r_message_properties, payload => o_payload, msgid => v_message_handle ); commit; end; /
我使用本指南得到了大部分权利,但我坚持了下来
o_payload := sys.aq$_jms_text_message.construct; o_payload.set_text(xmltype('text ').getClobVal());
该指南显示了如何排队RAW消息,但我需要它是JMS,否则数据类型与队列类型不匹配.
任何帮助将不胜感激,因为即使有全能的谷歌我也无法找到解决这个问题的方法.有没有办法使用oracle.jdbc.aq
类来实现它,或者我只需要搞砸它并使用SQL查询?