【问题标题】:DBMS_XMLGEN package limitations?DBMS_XMLGEN 包限制?
【发布时间】:2015-10-27 00:34:10
【问题描述】:

我需要从复杂查询的返回中获取 XML。我之前在类似情况下的示例,我使用 DBMS_XMLGEN 包上下文来生成 XML。

但是在这个例子中,我有一个问题:

    ...
    begin
    l_ctx :=
             DBMS_XMLGEN.newcontext (
                'SELECT SIRENREC AS receiptNumber,
ICPSCDDE AS companyCode,
             SISENPOL
                AS policyNumber,
             SIREISIN AS claimNumber_aux,
             SUBSTR (SIREISIN, 3, LENGTH (SIREISIN)) AS claimNumber,
      sirevlre - sirevirs + sireviva,
                AS receiptAmount
        FROM MTICPS,
             MTSIRE,
             MTSISE,
             MTINPI,
             MTRLRS              
       WHERE     ICPSIDEN = ''N''
             AND ICPSRFPG = :refPag
             AND ICPSCDDE = SIRECDDE
             AND ICPSISIN = SIREISIN
             AND ICPSNREC = SIRENREC
             AND RLRSCDDE = SIRECDDE
             AND RLRSSISE = SIREISIN
             AND RLRSSIRE = SIRENREC
             AND RLRSISIN = INPIISIN
             AND RLRSRECI = INPINREC
             AND RLRSCDDE = INPICDDE
             AND SIRECDDE = SISECDDE
             AND SIREISIN = SISEISIN
             AND SIREVLRE <> 0
             and rownum < 110
          ORDER BY SIRECDDE, SIREISIN, SIRENREC');
      DBMS_XMLGEN.setrowsettag (l_ctx, 'INT_DATA');
          DBMS_XMLGEN.setrowtag (l_ctx, 'Item');

          DBMS_XMLGEN.setbindvalue (l_ctx, 'refPag', 'BLABLA');
    lxmltype := DBMS_XMLGEN.getXmlType (l_ctx);

          DBMS_XMLGEN.closeContext (l_ctx);

我认为我的问题是尺寸。例如,如果我输入一个and rownum &lt; 110 条件,我可以获得所有 XML 并完成 110 条记录。但是如果我有超过 110 条记录,我的 l_ctx 变量就是空的,我的 XML 是空的。

我们这里有一些限制?我查阅了 Google 和 Oracle 文档,但找不到任何参考资料。

有什么帮助吗? 谢谢。 菲利普

Edit1:我发现将 XMLTYPE 转换为 CLOB 时出现数字或值错误。我认为我的 XMLTYPE 不为空。它只是一个大变量,我无法使用 xmltype.getClobVal(); 将其转换为 CLOB;

【问题讨论】:

    标签: oracle dbms-xmlgen


    【解决方案1】:

    嗯.. 我发现了错误。这是从 XMLTYPE 到 CLOB 的转换。对于大型 XMLTYPE 变量,XMLTYPE.getClobVal() 具有某种大小限制。所以,我使用 XMLSerialize 函数进行转换:SELECT XMLSERIALIZE (DOCUMENT lxml_xmltypevar) FROM DUAL;

    谢谢你。

    【讨论】:

    • 对于其他用户,您使用的是哪个 Oracle 版本?
    • Oracle 数据库 11g 企业版版本 11.2.0.4.0 - 64 位
    • 感谢您回答您自己的问题,我遇到了同样的问题。
    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2018-11-01
    • 2020-09-18
    • 2019-02-18
    相关资源
    最近更新 更多