我对 Oracle 的 XDB 完全陌生,试图在我完全陌生的生产环境中修复代码。
SELECT DBMS_LOB.SubStr(RTRIM (XMLAGG (XMLELEMENT (E,XMLATTRIBUTES (ntx.nttx_str || '|' AS "Seg")) ORDER BY ntx.ref_id, ntx.ntnb_input_dtm desc)
.EXTRACT ('./E[not(@Seg = preceding-sibling::E/@Seg)]/@Seg').GetClobVal(),','),1000,1)
FROM
(SELECT umum.ref_id,
ntnb.ntnb_input_dtm,
DBMS_LOB.SubStr(RTRIM (XMLAGG (XMLELEMENT (E,XMLATTRIBUTES (nttx.nttx_text || '' AS "Seg")) ORDER BY nttx.nttx_seq_no asc)
.EXTRACT ('./E[not(@Seg = preceding-sibling::E/@Seg)]/@Seg').GetClobVal(),','),500,1) AS nttx_str
FROM umum_util_mgt umum,
ntnb_note_base ntnb,
nttx_note_text nttx
WHERE ntnb.ntnb_id = umum.ntnb_id
AND ntnb.ntnb_id = nttx.ntnb_id
AND ntnb.ntnb_input_dtm = nttx.ntnb_input_dtm
GROUP BY umum.ref_id, ntnb.ntnb_input_dtm
) ntx,
php_mdx_auth_ext_tbl paex
WHERE ntx.ref_id = paex.ref_id*
当我尝试执行上述查询时,Oracle 返回以下错误
ORA-31061: XDB 错误: 特殊字符到转义字符的转换失败。
这曾经在旧版本的 Oracle 中工作,在迁移到 oracle 12c 后,我们面临这个问题。