PL/SQL 对象类型到 XML

Posted

技术标签:

【中文标题】PL/SQL 对象类型到 XML【英文标题】:PL/SQL Object Type to XML 【发布时间】:2020-01-12 16:59:47 【问题描述】:

我正在尝试从 PL/SQL 对象创建 XML

<header>
     <Amount Ccy="USD">100</Amount>
</header>

对于上述结果,我尝试创建如下所示的 PL/SQL 对象:-

create or replace type "header" as object( "Amount"  number)

DECLARE
  l_header "header";
  l_xml    xmltype;

BEGIN

  l_header := NEW "header"(100);
  l_xml    := xmltype(l_header);

  dbms_output.put_line(l_xml.getclobval);
END;




Result of above is 
<header><Amount>100</Amount></header>

如何在 pl/sql 对象创建中包含 Ccy 属性?

【问题讨论】:

我确信这可以通过 pl/sql 类型来实现,看起来我缺少金额标签。 嗨,任何使用 pl/sql 类型获取属性和标签值的帮助都会非常有帮助。 嗨,我知道我们可以在 plsql 类型创建中使用 @ 添加属性。例如。创建或替换类型“Amount_t”作为对象(“@Ccy”);创建或替换类型“header”作为对象(“Amount”“Amount_t”)这能够提供属性,但我无法获取标签值。这个结果是
。如何为金额标签增加价值??
【参考方案1】:

如果可能,您可以采用这种不同的方法:

DECLARE
  l_xml    xmltype;
BEGIN

  SELECT XMLELEMENT
   ( "header", 
      XMLELEMENT
       (
          "Amount",
          XMLATTRIBUTES
          (
            'USD' AS "Ccy"
          )
       )
   )
  INTO l_xml
  FROM dual;


  dbms_output.put_line(l_xml.getclobval);
END;

【讨论】:

您好,实际的 xml 相当大,有 200 个标签,使用这种方法很难管理。因此,我们希望创建对象并将值分配给相应的标签。

以上是关于PL/SQL 对象类型到 XML的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 私有对象方法

typeof 等价于 PL/SQL 中的对象类型

pl/sql 对象类型“ORA-06530:引用未初始化的复合”错误

如何在返回 SELF 的 pl/sql 对象类型的函数中链接调用

PL/SQL数据类型

PL/SQL的变量