Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Có thể xếp hàng từ hàng đợi ANYDATA Synchronous Capture bằng JDBC không?

Bạn có thể viết một thủ tục được lưu trữ và sắp xếp lại thư trong PL / SQL và chuyển đổi nó thành văn bản XML và trả về nó dưới dạng CLOB. Sau đó, bạn có thể gọi thủ tục được lưu trữ từ Java với JDBC. Tôi đã sử dụng một cách giải quyết tương tự trước đây khi API AQ thuần túy thiếu tính năng.

Ví dụ:

create or replace procedure dequeue_lcr(
    p_queue_name   varchar2,
    p_consumer     varchar2,
    p_wait_seconds number,
    p_lcr          out clob) as
  deq_lcr     anydata;
  deq_xml     xmltype;
  msgid       raw(16); 
  deqopt      dbms_aq.dequeue_options_t; 
  mprop       dbms_aq.message_properties_t;
  no_messages exception; 
  pragma exception_init (no_messages, -25228);
begin
  deqopt.consumer_name := p_consumer;
  deqopt.wait := p_wait_seconds;
  deqopt.navigation := dbms_aq.first_message;
  deqopt.dequeue_mode  := dbms_aq.remove;
  begin
    dbms_aq.dequeue( 
      queue_name         =>  p_queue_name,
      dequeue_options    =>  deqopt,
      message_properties =>  mprop,
      payload            =>  deq_lcr,
      msgid              =>  msgid);
     deq_xml := dbms_streams.convert_lcr_to_xml(deq_lcr);
     p_lcr := deq_xml.getclobval();    
     commit;
  exception
    when no_messages then
      p_lcr := null;
  end;
end;

Điều này hoạt động khi tôi gọi nó từ PL / SQL với hàng đợi và người tiêu dùng thích hợp:

declare
  v_clob clob;
begin
  dequeue_lcr('aqtest.hcb_queue_any', 'LOCAL_AGENT', 5, v_clob);
  if (v_clob is not null) then
    dbms_output.put_line('Data: ' || v_clob);
  else
    dbms_output.put_line('No messages');  
  end if;
end;

Chỉ cần thực hiện cuộc gọi từ Java với CallableStatement với tham số đầu ra là clob và bạn đã sẵn sàng!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Viết hoa tên ngày và tháng khi định dạng ngày trong Oracle

  2. So sánh các nhà cung cấp Oracle .NET bên thứ 3

  3. Nối một cột theo một nhóm trong R

  4. Cách chèn thuộc tính img src được mã hóa base64 vào bảng trong Oracle và sau đó hiển thị nó trên trang trong Oracle apex

  5. Oracle Database12c ORA 01918 và lỗi kết nối