一尘不染

LISTAGG函数:``字符串连接的结果太长''

sql

我正在使用Oracle SQL开发人员版本3.0.04。我试图使用该功能LISTAGG将数据分组在一起。

    CREATE TABLE FINAL_LOG AS
    SELECT SESSION_DT, C_IP, CS_USER_AGENT,
    listagg(WEB_LINK, ' ')
        WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) "WEB_LINKS"
        FROM webviews
        GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
        ORDER BY SESSION_DT

但是,我不断收到错误消息,

SQL Error: ORA-01489: result of string concatenation is too long

我很确定输出可能会超过4000,因为这里提到的WEB_LINK是url stem和url query的串联值。

有没有解决的办法,或者还有其他选择吗?


阅读 145

收藏
2021-05-05

共1个答案

一尘不染

由于聚合字符串的长度可以超过4000个字节,因此不能使用该LISTAGG函数。您可能会创建一个用户定义的集合函数,该函数返回CLOB而不是VARCHAR2。有一个用户定义的聚合示例,该示例CLOB原始的AskTom讨论中返回Tim,Tim从该第一个讨论链接到该讨论。

2021-05-05