ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
查看: 334|回复: 16

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

[复制链接]
回帖奖励 1080 pub币 回复本帖可获得 180 pub币奖励! 每人限 1 次
论坛徽章:
370
发表于 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结构
论坛徽章:
395
阿斯顿马丁
日期:2014-01-03 13:53:52马上有对象
日期:2014-04-09 16:19:542014年世界杯参赛球队: 洪都拉斯
日期:2014-06-25 08:25:55itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07懒羊羊
日期:2015-02-21 22:03:31
发表于 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分钟包会。

使用道具 举报

回复
论坛徽章:
133
秀才
日期:2015-11-12 17:43:40秀才
日期:2016-02-18 09:15:13秀才
日期:2016-02-18 09:21:30秀才
日期:2016-02-18 09:23:46秀才
日期:2016-02-18 09:24:302016猴年福章
日期:2016-02-18 09:31:30秀才
日期:2016-02-18 09:39:10秀才
日期:2016-02-18 10:06:46秀才
日期:2016-02-18 10:08:02秀才
日期:2016-02-18 10:08:14
发表于 2017-10-11 14:45 | 显示全部楼层

回帖奖励 +180 pub币

dbms_xml

使用道具 举报

回复
论坛徽章:
4
秀才
日期:2017-08-11 15:38:46秀才
日期:2017-09-08 11:09:50秀才
日期:2017-09-25 15:10:28秀才
日期:2017-09-25 15:10:28
发表于 2017-10-11 20:47 | 显示全部楼层

回帖奖励 +180 pub币

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

使用道具 举报

回复
论坛徽章:
479
状元
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09
发表于 2017-10-11 22:58 | 显示全部楼层

回帖奖励 +180 pub币

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

使用道具 举报

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

回帖奖励 +180 pub币

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

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
13
2013年新春福章
日期:2013-02-25 14:51:24秀才
日期: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美羊羊
日期:2015-03-31 11:45:14
发表于 2017-10-12 09:55 | 显示全部楼层

回帖奖励 +180 pub币

进来看看

使用道具 举报

回复
求职 : 数据库管理员
招聘 : Java研发
认证徽章
论坛徽章:
6329
ITPUB9周年纪念徽章
日期:2014-05-02 10:36:402011新春纪念徽章
日期:2014-12-29 12:11:142010广州亚运会纪念徽章:卡巴迪
日期:2014-08-06 08:44:25马上加薪
日期:2017-01-10 16:49:34马上有钱
日期:2017-01-10 16:49:34马上有钱
日期:2014-12-26 15:39:08马上有钱
日期:2014-12-26 15:39:08马上有房
日期:2014-12-26 15:42:55马上有车
日期:2017-01-10 16:49:34马上有钱
日期:2014-12-31 17:16:56
发表于 2017-10-12 10:55 | 显示全部楼层

回帖奖励 +180 pub币

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

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
16
优秀写手
日期:2014-02-27 06:00:13弗兰奇
日期: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-09 16:42:50慢羊羊
日期:2015-06-15 21:49:18
发表于 2017-10-12 13:59 | 显示全部楼层

回帖奖励 +180 pub币

mark一下

使用道具 举报

回复

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

本版积分规则

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