Oracle DB为11g。我的问题与甲骨文应用程序ERP有关。
我们正在使用dbms_aq.dequeue来排定销售订单。问题是,所有的销售订单线都已退出排队。我们想要设置一个条件,即dbms_aq.dequeue只应在ORG_ID为82的情况下将此类销售订单行排出队列。
这是甲骨文中的标准包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中有条件地检索行,因为
我能把这种情况放在这里吗?
l_dequeue_options.deq_condition := 'tab.user_data.line_varray.org_id=99';发布于 2019-10-11 17:33:30
使用TABLE和EXISTS运算符。
l_dequeue_options.deq_condition := 'EXISTS(
SELECT 1 FROM
TABLE(CAST(tab.user_data.line_varray AS SYSTEM.ASO_Line_Var_Type)) e
WHERE e.org_id = 99)';https://stackoverflow.com/questions/57269071
复制相似问题