我有一条选择语句会引发错误
ORA-19011:字符串缓冲区太小
选择如下
SELECT Substr(Rtrim (Xmlagg (Xmlelement (e, Concat(message_text, ' '))).extract
(
'//text()'),
' '), 0, 256) message_text,
mobile_number,
tran_date,
parent_tran_acct_no
FROM custom.mobee_push_sms_drc
WHERE bank_id = '43'
AND status = 'A'
AND mobile_number <> '243'
AND mobile_number LIKE '243%'
GROUP BY mobile_number,
tran_date,
parent_tran_acct_no
请帮助更正sql。
答案 0 :(得分:1)
您似乎错过了GetClobVal
:
SELECT SUBSTR (
RTRIM (
XMLAGG (XMLELEMENT (e, CONCAT (MESSAGE_TEXT, ' '))).EXTRACT (
'//text()').GetClobVal (), --> here
' '),
0,
256)
MESSAGE_TEXT,
mobile_number,
tran_date,
parent_tran_acct_no
FROM custom.mobee_push_sms_drc
WHERE bank_id = '43'
AND status = 'A'
AND mobile_number <> '243'
AND mobile_number LIKE '243%'
GROUP BY mobile_number, tran_date, parent_tran_acct_no
如果没有它,Oracle会尝试将XMLtype
转换为VARCHAR2
而不是CLOB
,这样结果就不合适了。