PLSQL中的XML解析
问题描述:
我有一个以下格式的XML并需要将数据插入到表中。PLSQL中的XML解析
数据是动态的,需要插入到PL/SQL表中。请你指导我如何解决这个问题。
<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Name SN="ABC" PID="PID1">
<Name SN="111" PID="P01" />
<Name SN="222" PID="P02" />
</Name >
<Name SN="PQR" PID="PID2">
<Name SN="100" PID="P04" />
<Name SN="200" PID="P05" />
<Name SN="300" PID="P05" />
<Name SN="400" PID="P06" />
</Name >
</Result>`
查询:
SELECT XXCSS_AUTOTEST_INPUT_OBJ (
SUBSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
'"',
1,
1)
+ 1,
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
'"',
1,
2)
- INSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
'"',
1,
1)
- 1),
SUBSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
'"',
1,
5)
+ 1,
INSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
'"',
1,
6)
- INSTR (
EXTRACT (VALUE (P), '/Device').getstringval(),
'"',
1,
5)
- 1))
BULK COLLECT INTO p_auto_test_out
FROM TABLE (
XMLSEQUENCE (EXTRACT (l_xml_file, '//Result/Device'))) P;
我能读拳头两个标签ABC和PQR和无法读取子标签。
答
以下是可能对您有帮助的示例SQL。根据您的需求调整它。在SQL中查询xml有许多可用的在线文档。您可以按照这些示例编写复杂的查询。
Declare @xml XML ='<?xml version="1.0" encoding="UTF-8"?>
<Result>
<Name SN="ABC" PID="PID1">
<Name SN="111" PID="P01" />
<Name SN="222" PID="P02" />
</Name >
<Name SN="PQR" PID="PID2">
<Name SN="100" PID="P04" />
<Name SN="200" PID="P05" />
<Name SN="300" PID="P05" />
<Name SN="400" PID="P06" />
</Name >
</Result>'
SELECT mytable.mycol.value('(../@SN)[1]','VARCHAR(50)') [Parent SN],
mytable.mycol.value('(../@PID)[1]','VARCHAR(50)') [Parent PID],
mytable.mycol.value('(@SN)[1]','INT') [SN],
mytable.mycol.value('(@PID)[1]','VARCHAR(50)') [PID]
FROM @xml.nodes(N'/Result/Name/*') AS mytable(mycol)
什么是错误?你可以发布你的SQL吗? – Noor
感谢您的回复。我正在使用下面的SQL – Syed