查看: 2029|回复: 18

[PL/SQL] 请教用PLSQL生成XML的写法

[复制链接]
回帖奖励 720 pub币 回复本帖可获得 180 pub币奖励! 每人限 1 次
论坛徽章:
375
迈阿密热火
日期:2018-06-13 16:31:54奥兰多魔术
日期:2018-06-13 16:31:54亚特兰大老鹰
日期:2018-06-13 16:31:54华盛顿奇才
日期:2018-06-13 16:31:54夏洛特黄蜂
日期:2018-06-13 16:31:54
发表于 2017-10-11 13:39 | 显示全部楼层 |阅读模式
本帖最后由 succeed9918 于 2017-10-11 14:41 编辑

表结构以及数据如下,需要生成XML格式如图片(图片中的subjectDetailCode对应表里的CODE字段)。
这里有个类似递归的调用。一直没有什么好方法实现,所以想请教下。

-- Create tablecreate table CUX_XML_TEST
(
  org_id        NUMBER,
  parent_org_id NUMBER,
  code          VARCHAR2(200),
  parentcode    VARCHAR2(20),
  cashamount    NUMBER
);
--insert  data
insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '201', '-1', 230);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '20101', '201', 200);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '2010101', '20101', 100);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '2010102', '20101', 100);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '20102', '201', 10);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '2010201', '20102', 10);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (425, 198, '20103', '201', 20);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '201', '-1', 230);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '20101', '201', 200);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '2010101', '20101', 100);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '2010102', '20101', 100);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '20102', '201', 10);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '2010201', '20102', 10);

insert into cux_xml_test (ORG_ID, PARENT_ORG_ID, CODE, PARENTCODE, CASHAMOUNT)
values (198, -1, '20103', '201', 20);


数据结构

数据结构

生成XML结构

生成XML结构
论坛徽章:
401
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
发表于 2017-10-11 14:01 | 显示全部楼层

回帖奖励 +180 pub币

你这每层都一样的,直接用字符串||
下一行比上一行级别低就添加<subjects>

使用道具 举报

回复
认证徽章
论坛徽章:
168
SQL数据库编程大师
日期:2016-01-13 10:30:43SQL极客
日期:2013-12-09 14:13:35SQL大赛参与纪念
日期:2013-12-06 14:03:45最佳人气徽章
日期:2015-03-19 09:44:03现任管理团队成员
日期:2015-08-26 02:10:00秀才
日期:2015-07-28 09:12:12举人
日期:2015-07-13 15:30:15进士
日期:2015-07-28 09:12:58探花
日期:2015-07-28 09:12:58榜眼
日期:2015-08-18 09:48:03
发表于 2017-10-11 14:02 | 显示全部楼层

回帖奖励 +180 pub币

oracle那几个xml函数,自己搜一下,30分钟包会。

使用道具 举报

回复
论坛徽章:
142
秀才
日期:2016-01-06 14:01:09秀才
日期:2016-02-18 10:06:46秀才
日期:2016-02-18 10:08:02秀才
日期:2016-02-18 10:08:14秀才
日期:2016-03-01 09:57:08天蝎座
日期:2016-03-18 14:23:56秀才
日期:2016-03-24 09:10:24秀才
日期:2016-03-24 09:20:52秀才
日期:2016-04-21 14:08:53秀才
日期:2016-04-21 14:11:59
发表于 2017-10-11 14:45 | 显示全部楼层

回帖奖励 +180 pub币

dbms_xml

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
24
秀才
日期:2017-08-11 15:38:46秀才
日期:2018-01-02 15:17:54秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22技术图书徽章
日期:2018-01-02 15:18:30秀才
日期:2018-03-01 10:05:18秀才
日期:2018-05-22 15:21:20
发表于 2017-10-11 20:47 | 显示全部楼层

回帖奖励 +180 pub币

爽!爽!爽!爽!爽!爽!

使用道具 举报

回复
论坛徽章:
527
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
发表于 2017-10-11 22:58 | 显示全部楼层

回帖奖励 +180 pub币

加菲猫懂XML, 出来走两步。

使用道具 举报

回复
认证徽章
论坛徽章:
218
2010新春纪念徽章
日期:2010-03-01 11:20:51至尊黑钻
日期:2015-08-13 13:38:12至尊黑钻
日期:2015-02-15 09:47:472015年中国系统架构师大会纪念徽章
日期:2015-07-31 17:48:202015中国数据库技术大会纪念徽章
日期:2015-05-15 14:08:23管理团队2007贡献徽章
日期:2015-01-19 09:48:27红宝石
日期:2015-01-19 09:42:28红宝石
日期:2015-01-19 09:46:08海蓝宝石
日期:2015-02-03 10:23:39红宝石
日期:2015-02-03 10:26:04
发表于 2017-10-12 08:44 | 显示全部楼层

回帖奖励 +180 pub币

没研究过 dbms_xml 包,不过使用自连接的方式,也应该可以拼接出来

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
14
2013年新春福章
日期:2013-02-25 14:51:24秀才
日期:2017-09-18 17:33:21秀才
日期:2017-09-18 17:04:24秀才
日期:2017-08-18 11:04:35秀才
日期:2017-08-18 11:02:47秀才
日期:2017-03-28 15:59:38秀才
日期:2017-03-01 13:53:392017金鸡报晓
日期:2017-02-08 14:09:13秀才
日期:2015-09-06 10:19:32秀才
日期:2015-07-03 17:00:53
发表于 2017-10-12 09:55 | 显示全部楼层

回帖奖励 +180 pub币

进来看看

使用道具 举报

回复
求职 : 数据库管理员
招聘 : Java研发
认证徽章
论坛徽章:
6347
ITPUB9周年纪念徽章
日期:2014-05-02 10:36:402011新春纪念徽章
日期:2014-12-29 12:11:142010广州亚运会纪念徽章:卡巴迪
日期:2014-08-06 08:44:252012新春纪念徽章
日期:2014-12-29 12:11:142013年新春福章
日期:2014-12-29 12:11:14马上有车
日期:2014-12-29 12:11:14马上有房
日期:2014-12-29 12:11:14马上有钱
日期:2014-12-29 12:11:14马上有对象
日期:2014-12-29 12:11:14马上加薪
日期:2014-12-29 12:11:14
发表于 2017-10-12 10:55 | 显示全部楼层

回帖奖励 +180 pub币

晚上之前要是没人给你写出来,我给你搞搞...

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
17
优秀写手
日期:2014-02-27 06:00:13秀才
日期:2017-08-11 15:37:32弗兰奇
日期:2017-07-04 09:16:01秀才
日期:2017-06-29 10:16:48乌索普
日期:2017-05-26 08:58:24娜美
日期:2017-05-18 16:07:23ITPUB15周年纪念
日期:2017-05-02 15:22:36妮可·罗宾
日期:2017-04-06 10:06:19处女座
日期:2016-03-10 09:03:26白羊座
日期:2015-10-10 15:01:39
发表于 2017-10-12 13:59 | 显示全部楼层

回帖奖励 +180 pub币

mark一下

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

【有奖讨论】解决存储挑战了解一下
奖品:米家车载空气净化器 、米家声波电动牙刷 、小米运动蓝牙耳机

在数字经济时代,井喷式增长的数据,在释放大量商业价值的同时,也随之对企业的IT基础设施带来了不容忽视的挑战!如何存储、管理、使用这些数据呢?这是一条比以往更艰难的路~

活动时间:9月20日-10月11日

参与讨论>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表