xml - PL/SQL:循环遍历 XML 列并从重复元素中提取值
问题描述
我有一个包含 XMLType 列的 SQL 表。我需要遍历每一行并从列中提取值。
XML 包含多个具有相同的子项,如下所示:
<parent>
<child>Test</child>
<child>Test1</child>
<child>Test2</child>
</parent>
我的目标是从每个孩子那里获取价值并附加到一个字符串中。但是,我在提取价值时遇到问题。
我目前的解决方案:
DECLARE
sample VARCHAR(2000);
BEGIN
FOR row IN (SELECT xml_column FROM table)
LOOP
FOR child in (SELECT EXTRACT('/parent/child') ...
LOOP
....
END LOOP;
END LOOP;
END;
我的第一个问题是我似乎无法获得个人价值观。我已经使用了 EXTRACT 和 EXTRACTVALUE,但我得到的最好的是'TEST1TEST2 ...'。
其次,如果我尝试使用row.XML_COLUMN
它会抱怨它不存在。
解决方案
尝试使用XMLTable像集合一样遍历值。
示例架构
--drop table table1;
create table table1 as
select xmltype('
<parent>
<child>Test</child>
<child>Test1</child>
<child>Test2</child>
</parent>') xml_column
from dual;
PL/SQL 循环
begin
for children in
(
select child
from table1
cross join xmltable
(
'/parent/child'
passing xml_column
columns child varchar2(100) path '/'
)
) loop
dbms_output.put_line(children.child);
end loop;
end;
/
DBMS_OUTPUT 结果
Test
Test1
Test2
推荐阅读
- javascript - Angular + Electron 基础应用程序不会刷新页面的一部分
- android - 如何在后台从 Android 调用 Dart
- c# - 设置 ParameterType=GetOrPost 时的 Restsharp 参数行为
- node.js - 如何在 Azure 应用程序控制台上运行 npm 命令?
- python-3.x - 使用 asyncio 等待子进程的结果
- javascript - 数组没有被 useState 更新
- python - Python 参数化 SQL 添加了额外的撇号
- r - R:如何预先分配一个空数据框列表?
- spring-boot - RabbitMQ 在消费消息时我得到没有找到类的方法 [B 异常
- list - 在 Raku 中简洁地将单词的字符转换为它的 ascii 代码列表