sql – LISTAGG函数:“字符串连接的结果太长”

我使用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错误:ORA-01489:字符串连接的结果太长

我确信输出可能超过4000,因为这里提到的WEB_LINK是一个连结的url和url查询的值。

有什么办法绕过它还是有其他选择?

由于聚合字符串可能长于4000字节,因此不能使用LISTAGG函数。您可以创建一个返回CLOB而不是VARCHAR2的user-defined aggregate function。有一个用户定义的聚合的示例,返回从第一次讨论的Tim链接到的original askTom discussion中的CLOB。
http://stackoverflow.com/questions/13795220/listagg-function-result-of-string-concatenation-is-too-long

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql – LISTAGG函数:“字符串连接的结果太长”