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

 找回密码
 注册
12
返回列表 发新帖
楼主: succeed9918

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

[复制链接]
回帖奖励 720 pub币 回复本帖可获得 180 pub币奖励! 每人限 1 次
认证徽章
论坛徽章:
1
秀才
日期:2016-04-21 14:08:53
11#
发表于 2017-10-13 10:28 | 只看该作者

回帖奖励 +180 pub币

关注一下,以前用过这个包,但是生成的xml不太对劲

使用道具 举报

回复
认证徽章
论坛徽章:
8
秀才
日期:2017-09-18 17:01:40秀才
日期:2018-01-02 15:05:22秀才
日期:2018-01-02 15:13:25秀才
日期:2018-01-02 15:13:38秀才
日期:2018-01-02 15:13:38技术图书徽章
日期:2018-01-02 15:13:47秀才
日期:2018-01-02 15:35:05秀才
日期:2018-01-02 15:35:30
12#
发表于 2017-10-13 12:47 | 只看该作者

回帖奖励 +180 pub币

关注一下
来自安卓客户端来自客户端

使用道具 举报

回复
认证徽章
论坛徽章:
8
ITPUB9周年纪念徽章
日期:2010-10-08 09:28:522011新春纪念徽章
日期:2011-02-18 11:43:332013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2013-12-18 09:29:092014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02秀才
日期:2017-03-20 13:42:20秀才
日期:2017-07-11 13:54:02
13#
发表于 2017-10-13 20:47 | 只看该作者

回帖奖励 +180 pub币

鼓励一下~呵呵。

使用道具 举报

回复
论坛徽章:
293
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:22海蓝宝石
日期:2012-02-20 19:24:27铁扇公主
日期:2012-02-21 15:03:13
14#
发表于 2017-10-13 23:44 | 只看该作者

回帖奖励 +180 pub币

newkid 发表于 2017-10-11 22:58
加菲猫懂XML, 出来走两步。

我也不会啊,给个平面的做参考吧。。。

SQL> set serveroutput on;
SQL>
SQL>
SQL>  declare
  2     cursor cur is
  3        select level lvl, lpad(' ', (level - 1) * 3, ' ') || t.org_id org_id
  4          from (select distinct org_id,parent_org_id from CUX_XML_TEST) t
  5        connect by prior t.org_id = t.parent_org_id
  6         start with t.parent_org_id = -1;
  7  
  8      cursor cur2(p_org_id int) is
  9        select level lvl, lpad(' ', (level - 1) * 3, ' ') || t.code code, cashamount
10          from (select * from CUX_XML_TEST a where a.org_id = p_org_id) t
11        connect by prior t.code = t.parentcode
12         start with t.parentcode = -1;
13  
14    begin
15      for rec in cur loop
16        dbms_output.put_line( rec.lvl||' '||rec.org_id);
17        for rec2 in cur2(rec.org_id) loop
18          dbms_output.put_line(rec2.lvl||' '||rec2.code||' '||rec2.cashamount);
19        end loop;
20      end loop;
21    end;
22  /
1 198
1 201 230
2    20101 200
3       2010101 100
3       2010102 100
2    20102 10
3       2010201 10
2    20103 20
2    425
1 201 230
2    20101 200
3       2010101 100
3       2010102 100
2    20102 10
3       2010201 10
2    20103 20
PL/SQL procedure successfully completed

使用道具 举报

回复
论坛徽章:
293
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:22海蓝宝石
日期:2012-02-20 19:24:27铁扇公主
日期:2012-02-21 15:03:13
15#
发表于 2017-10-13 23:49 | 只看该作者
以 425 那颗子树为例,感觉还是有些问题,但可以参考一下,多个子树外层再循环拼接一下。。。

SQL> set long 2000;
SQL> set serveroutput on;
SQL>
SQL>
SQL>   SELECT DBMS_XMLGEN.getXMLType(
  2            DBMS_XMLGEN.newContextFromHierarchy(
  3          'SELECT level,
  4                  case
  5                       when CONNECT_BY_ISLEAF = 0 then
  6                            XMLElement ("subjects",
  7                              XMLElement("subject",
  8                                         XMLAttributes(t.code as "subjectDetailCode",t.cashamount as "cashAmount")
  9                                         )
10                                       )
11                       when CONNECT_BY_ISLEAF = 1 then
12                            XMLElement("subject",
13                                         XMLAttributes(t.code as "subjectDetailCode",t.cashamount as "cashAmount")
14                                         )
15                   end
16             FROM (select * from CUX_XML_TEST a where a.org_id = 425) t
17             connect by prior t.code = t.parentcode
18             start with t.parentcode = -1
19             order siblings by t.cashamount')
20         )
21    FROM DUAL
22  /
DBMS_XMLGEN.GETXMLTYPE(DBMS_XM
--------------------------------------------------------------------------------
<?xml version="1.0"?>
<subjects>
  <subject subjectDetailCode="201" cashAmount="230"/>
  <subjects>
    <subject subjectDetailCode="20102" cashAmount="10"/>
    <subject subjectDetailCode="2010201" cashAmount="10"/>
  </subjects>
  <subject subjectDetailCode="20103" cashAmount="20"/>
  <subjects>
    <subject subjectDetailCode="20101" cashAmount="200"/>
    <subject subjectDetailCode="2010101" cashAmount="100"/>
    <subject subjectDetailCode="2010102" cashAmount="100"/>
  </subjects>
</subjects>

使用道具 举报

回复
论坛徽章:
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
16#
 楼主| 发表于 2017-10-16 10:10 | 只看该作者
solomon_007 发表于 2017-10-13 23:49
以 425 那颗子树为例,感觉还是有些问题,但可以参考一下,多个子树外层再循环拼接一下。。。

SQL> set ...

多谢指导。我再测测。

使用道具 举报

回复
认证徽章
论坛徽章:
1
秀才
日期:2018-04-08 14:37:33
17#
发表于 2017-10-16 10:18 | 只看该作者

回帖奖励 +180 pub币

关注一下

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2018-7-6 10:03 | 只看该作者

回帖奖励 +180 pub币

使用道具 举报

回复
求职 : 技术/实施/服务顾问
论坛徽章:
13
2010新春纪念徽章
日期:2010-01-04 08:33:08秀才
日期:2017-12-12 10:15:21布鲁克
日期:2017-07-31 15:02:46秀才
日期:2017-07-11 13:54:02布鲁克
日期:2017-06-27 13:41:002014年世界杯参赛球队: 意大利
日期:2014-07-03 23:09:59ITPUB社区千里马徽章
日期:2013-06-09 10:15:34咸鸭蛋
日期:2013-05-10 14:58:29鲜花蛋
日期:2012-12-01 08:43:34茶鸡蛋
日期:2011-09-07 08:51:11
19#
发表于 2018-7-6 14:48 | 只看该作者

回帖奖励 +180 pub币

--select * from cux_xml_test;
declare
  o_xml_clob clob := null;

begin
  o_xml_clob := dbms_xmlgen.getxml('select * from cux_xml_test');

  dbms_output.put_line(o_xml_clob);
end;
----------------------------------

<?xml version="1.0"?>
<ROWSET>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>201</CODE>
  <PARENTCODE>-1</PARENTCODE>
  <CASHAMOUNT>230</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>20101</CODE>
  <PARENTCODE>201</PARENTCODE>
  <CASHAMOUNT>200</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>2010101</CODE>
  <PARENTCODE>20101</PARENTCODE>
  <CASHAMOUNT>100</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>2010102</CODE>
  <PARENTCODE>20101</PARENTCODE>
  <CASHAMOUNT>100</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>20102</CODE>
  <PARENTCODE>201</PARENTCODE>
  <CASHAMOUNT>10</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>2010201</CODE>
  <PARENTCODE>20102</PARENTCODE>
  <CASHAMOUNT>10</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>425</ORG_ID>
  <PARENT_ORG_ID>198</PARENT_ORG_ID>
  <CODE>20103</CODE>
  <PARENTCODE>201</PARENTCODE>
  <CASHAMOUNT>20</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>201</CODE>
  <PARENTCODE>-1</PARENTCODE>
  <CASHAMOUNT>230</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>20101</CODE>
  <PARENTCODE>201</PARENTCODE>
  <CASHAMOUNT>200</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>2010101</CODE>
  <PARENTCODE>20101</PARENTCODE>
  <CASHAMOUNT>100</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>2010102</CODE>
  <PARENTCODE>20101</PARENTCODE>
  <CASHAMOUNT>100</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>20102</CODE>
  <PARENTCODE>201</PARENTCODE>
  <CASHAMOUNT>10</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>2010201</CODE>
  <PARENTCODE>20102</PARENTCODE>
  <CASHAMOUNT>10</CASHAMOUNT>
</ROW>
<ROW>
  <ORG_ID>198</ORG_ID>
  <PARENT_ORG_ID>-1</PARENT_ORG_ID>
  <CODE>20103</CODE>
  <PARENTCODE>201</PARENTCODE>
  <CASHAMOUNT>20</CASHAMOUNT>
</ROW>
</ROWSET>

使用道具 举报

回复

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

本版积分规则

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