【发布时间】:2020-02-24 19:42:58
【问题描述】:
我是 PL/SQL 的新手,我被赋予了这项任务。我有 XML 消息存储在 Receive_XML 表中,字段名称为 XML_DATA。存在发送位置发送拆分序列的问题,这会导致它们在收到返回时出现问题。拆分序列是我们接收序列#1,然后是序列#2,然后再次接收序列#1。
在 Receive_XML 表中搜索以查找任何序列重复多次而不知道序列号的实例的最佳方法是什么。这是我们收到的 XML 记录的示例。
<MESSAGE>
<HEADER>
<MESSAGE_TYPE>ProductionSequence</MESSAGE_TYPE>
<TIMESTAMP>2019-10-29 10:00:01</TIMESTAMP>
</HEADER>
<PRODUCTION_SEQUENCE>
<SEQUENCES>
<SEQUENCE SEQUENCE_ID="8764 " SEQUENCE_ID_PARENT="">
<PIECE_GROUPS>
<PIECE_GROUP>
<PIECE>
<PIECE_ID>514236947</PIECE_ID>
</PIECE>
<PIECE>
<PIECE_ID>578645897</PIECE_ID>
</PIECE>
</PIECE_GROUP>
</PIECE_GROUPS>
</SEQUENCE>
<SEQUENCE SEQUENCE_ID="6452 " SEQUENCE_ID_PARENT="8764">
<PIECE_GROUPS>
<PIECE_GROUP>
<PIECE>
<PIECE_ID>514236947</PIECE_ID>
</PIECE>
<PIECE>
<PIECE_ID>578645897</PIECE_ID>
</PIECE>
</PIECE_GROUP>
</PIECE_GROUPS>
</SEQUENCE>
<SEQUENCE SEQUENCE_ID="8764 " SEQUENCE_ID_PARENT="6452">
<PIECE_GROUPS>
<PIECE_GROUP>
<PIECE>
<PIECE_ID>514236947</PIECE_ID>
</PIECE>
<PIECE>
<PIECE_ID>578645897</PIECE_ID>
</PIECE>
</PIECE_GROUP>
</PIECE_GROUPS>
</SEQUENCE>
</SEQUENCES>
</PRODUCTION_SEQUENCE>
</MESSAGE>
感谢您提供的任何帮助。
比尔
我最终发现对我有用的是:
select SEQUENCE_ID, count(SEQUENCE_ID) Counter
from (
select SEQUENCE_ID
from Receive_XML tbl,
xmltable('/MESSAGE/PRODUCTION_SEQUENCE/SEQUENCES/SEQUENCE'
PASSING xmltype(tbl.xml_data)
COLUMNS SEQUENCE_ID VARCHAR2(30) PATH '@SEQUENCE_ID')
where tbl.id = 4451
) rs
group by SEQUENCE_ID;
【问题讨论】:
标签: xml oracle search plsql duplicates