2016-11-20 62 views
0

下面是一个示例输出。我想用plsqlxml生成以下输出,但是如何从双表中获取数据。可能吗?如何使用双表生成XML?

<Users> 
<User> 
<UserDescription i:nil="true"/> 
<UserTypeCD>DL</DealUserTypeCD> 
<Employee> 
<EmailAddress i:nil="true"/> 
<EmployeeNr i:nil="true"/> 
</Employee> 
</User> 
<User> 
<UserDescription i:nil="true"/> 
<UserTypeCD>DC</UserTypeCD> 
<Employee> 
<EmailAddress i:nil="true"/> 
<EmployeeNr i:nil="true"/> 
</Employee> 

我通过usertypecode硬编码,所以我需要双表。

+0

我不知道'plsqlxml'应该是什么?基于该XML文档的预期输出是什么? –

+0

通过oracle生成XML。我需要根据硬编码值生成上面的xml。可以吗? – swamy

+0

为什么你需要双重硬编码值?你可以使用文字。 – bassrek

回答

0

您可以通过2种方式生成XML文档。 XMLTYPE

DECLARE 
    l_refcursor SYS_REFCURSOR; 
    l_xmltype XMLTYPE; 
BEGIN 
    OPEN l_refcursor FOR SELECT department_id 
          , department_name 
          FROM departments 
         WHERE department_id IN (10,20); 

    l_xmltype := XMLTYPE(l_refcursor); 
    dbms_output.put_line(l_xmltype.getClobVal); 
END; 
/

2)使用DBMS_XMLGEN包

1)使用的构造方法。 DBMS_XMLGEN内置类似于XMLTYPE构造函数,但直接接受查询:

DECLARE 
    l_xmltype XMLTYPE; 
BEGIN 
    l_xmltype := dbms_xmlgen.getxmltype('SELECT department_id 
               , department_name 
              FROM departments 
              WHERE department_id IN (10,20)' 
             ); 

    dbms_output.put_line(l_xmltype.getClobVal); 
END; 
/