Oracle中的字符串缓冲区错误太小

时间:2016-12-02 03:29:46

标签: oracle

我的表格包含以下数据

Username Groupname
-------- ---------------
A        MAXADMIN
A        BUYER
B        PURCHASEMANAGER
B        FINANCECLERK

输出应如下所示

Username Groupname 
-------- ----------------------------
A        MAXADMIN,BUYER
B        PURCHASEMANAGER,FINANCECLERK

我收到错误ORA-19011: character string buffer too small. 提前致谢

  select maxuser.userid,
         person.displayname,
         maxuser.status,
         sod_Report.severity,
         sod_Report.scenario,
         RTRIM (XMLAGG (XMLELEMENT (e, groupuser.groupname || ',')).EXTRACT ('//text()'),',') groupname
    from maxuser,
         person,
         groupuser,
         sod_report
   where    maxuser.userid=person.personid
        and groupuser.userid = maxuser.userid
        and sod_report.userid= maxuser.userid
group by maxuser.userid,
         person.displayname,
         maxuser.status,
         sod_Report.severity,
         sod_Report.scenario

2 个答案:

答案 0 :(得分:1)

错误消息是自我描述性的。

  

19011,00000,“字符串缓冲区太小”

     

原因:要求的字符串结果太大而无法返回

     

操作:取而代之的是

您需要使用DBMS_LOB包来检索XMLTYPE数据表。 这是一个解释如何将结果作为LOB的示例。 ORA-19011: Character string buffer too small

答案 1 :(得分:0)

如果我们需要使用4000个以上的字符,我们可以使用以下功能-

select maxuser.userid,
         person.displayname,
         maxuser.status,
         sod_Report.severity,
         sod_Report.scenario,

         RTRIM (XMLAGG (XMLELEMENT (e, groupuser.groupname || ',')).EXTRACT ('//text()').getClobVal(),',') groupname

.....