我有一个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('<user>text</user>').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;
/
Run Code Online (Sandbox Code Playgroud)
我使用本指南得到了大部分权利,但我坚持了下来
o_payload := sys.aq$_jms_text_message.construct;
o_payload.set_text(xmltype('<user>text</user>').getClobVal());
Run Code Online (Sandbox Code Playgroud)
该指南显示了如何排队RAW消息,但我需要它是JMS,否则数据类型与队列类型不匹配.
任何帮助将不胜感激,因为即使有全能的谷歌我也无法找到解决这个问题的方法.有没有办法使用oracle.jdbc.aq类来实现它,或者我只需要搞砸它并使用SQL查询?