gpt4 book ai didi

sql - WM_CONCAT 用例

转载 作者:行者123 更新时间:2023-12-04 06:53:33 25 4
gpt4 key购买 nike

我有一个选择:

select substr(acc,1,4)
,currency
, amount
, module
, count(*)
, wm_concat(trn_ref_no) trn
from all_entries
where date = to_date ('01012010','DDMMYYYY')
group by substr(acc,1,4),currency, amount, module

在这种情况下,我收到一个错误:
ORA-06502: PL/SQL: : character string buffer too small ... "WMSYS.WM_CONCAT_IMPL"
为了避免缓冲区限制错误,我将其更改为:
select substr(acc,1,4)
,currency
, amount
, module
, count(*)
, (case when count(*) < 10 then wm_concat(trn_ref_no) else null end) trn
from fcc.acvw_all_ac_entries
where trn_dt = to_date ('05052010','DDMMYYYY')
group by substr(acc,1,4),currency, amount, module

但即使在这种情况下,我也有同样的错误。我怎样才能避免这个错误?

最佳答案

WM_CONCAT 返回一个 VARCHAR2,因此在 SQL 中被限制为最多 4000 个字符。如果您需要更多,您可以编写自己的字符串聚合函数,该函数返回一个 CLOB。但是,最好考虑一下为什么要这样做,以及是否没有更好的方法 - 例如使用 10G COLLECT 函数返回一个集合。

this article on string aggregation techniques了解如何编写自己的聚合函数。

关于sql - WM_CONCAT 用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com