3

Oracle DB は 11g です。私の質問は、Oracle APPS ERP に関するものです。

販売注文をデキューするために dbms_aq.dequeue を使用しています。問題は、すべての受注明細がデキューされることです。dbms_aq.dequeue が、ORG_ID が 82 である販売注文明細のみをデキューする必要があるという条件を設定します。

これは、Oracle の標準パッケージ ASO_ORDER_FEEDBACK_GET_PVT です。

宣言

l_message SYSTEM.ASO_Order_Feedback_Type;

コード

dbms_aq.dequeue(queue_name => l_queue_name,
                dequeue_options => l_dequeue_options,
                message_properties => l_message_properties,
                payload => l_message,
                msgid => l_msg_id);

現在、SYSTEM.ASO_Order_Feedback_Type は、他の多くのタイプ (header_type ASO_Header_Type、line_varray ASO_Line_Var_Type など) で構成されています。

header_type から条件付きで行を取得する条件を設定したい場合、dbms_aq.dequeue を呼び出す前に次の条件を設定できるとします。

l_dequeue_options.deq_condition := 'tab.user_data.header_type.org_id=99';

しかし、line_varray から条件付きで行を取得するための条件の入れ方がわかりません。

  1. line_varray は ASO_Line_Var_Type のものです
  2. タイプ ASO_Line_Var_Type は AS VARRAY ( 1000000000 ) OF ASO_Line_Type と定義されています
  3. ASO_Line_Type は AS OBJECT として定義されます (accounting_rule_id NUMBER 、actual_arrival_date DATE 、....、org_id NUMBER 、...)

このような条件を付けることはできますか

l_dequeue_options.deq_condition := 'tab.user_data.line_varray.org_id=99';
4

1 に答える 1