oracle 用PLSQL实现XML的生成与输出

jhdbpxl9  于 2023-06-22  发布在  Oracle
关注(0)|答案(1)|浏览(114)

下面是需要生成的XML。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Form1>
<ContentForm>
<SectionI>
<Date>13/01/2023</Date>
</SectionI>
<SectionII>
<Type>C</Type>
<ID>1809</ID>
<RIC></RIC>
<UEN>019</UEN>
<Name>Limited</Name>
</SectionII>
</ContentForm>
</Form1>
  1. xmlconcat合并不同的节是正确的还是有其他的方法
    1.如何生成第一个xml版本标签并将其连接到主xml中?
    1.我们可以把它放在PLSQL的OUT变量中吗?如果可以,怎么做?
    1.如何在查询中打开Form和ContentForm标签。
    Oracle查询
SELECT
    xmlconcat
    (   
        XMLELEMENT
        ("SectionI",XMLELEMENT("Date",SYSDATE)
        )
    ,
        XMLELEMENT
        ("SectionII",
            XMLELEMENT("Type",'C'),
            XMLELEMENT("ID",'1809'),
            XMLELEMENT("RIC",NULL),
            XMLELEMENT("UEN",'019'),
            XMLELEMENT("Name",'Limited')
        ) 
    )
    from dual
Select 
XMLELEMENT("?xml",xmlattributes('1.0' as  "Version",'UTF-8' as  "encoding",'no' as  "standalone"))
from dual
mwyxok5s

mwyxok5s1#

使用特殊的xml函数比使用字符串函数更好。你可以使用xmlroot和另外两个xmlelement来实现:
DBFiddle:https://dbfiddle.uk/if0oBYgF

select
    xmlroot(
          XMLELEMENT("Form1",
             XMLELEMENT("ContentForm",
                XMLELEMENT("SectionI",XMLELEMENT("Date",SYSDATE))
               ,XMLELEMENT("SectionII",
                  XMLELEMENT("Type",'C'),
                  XMLELEMENT("ID",'1809'),
                  XMLELEMENT("RIC",NULL),
                  XMLELEMENT("UEN",'019'),
                  XMLELEMENT("Name",'Limited')
               ) 
             )
          )
        ,VERSION '1.0'
        ,STANDALONE NO
       )
    as xdata
from dual;

结果:

XDATA
------------------------------------------------
<?xml version="1.0" standalone="no"?>
<Form1>
  <ContentForm>
    <SectionI>
      <Date>2023-06-06</Date>
    </SectionI>
    <SectionII>
      <Type>C</Type>
      <ID>1809</ID>
      <RIC/>
      <UEN>019</UEN>
      <Name>Limited</Name>
    </SectionII>
  </ContentForm>
</Form1>

相关问题