Oracle 19c 中解决 "WM_CONCAT" 标识符无效错误
在 Oracle 12c 及之后的版本中,'WM_CONCAT' 函数已经被废弃,不再被支持。如果您使用的是 Oracle 19c 版本,建议使用 'LISTAGG' 函数来替代 'WM_CONCAT' 函数。
如果您仍然需要使用 'WM_CONCAT' 函数,可以通过以下步骤来解决:
-
下载并安装第三方库包含 'WM_CONCAT' 函数,例如:OraOpenSource 的 'WM_CONCAT' 函数库。
-
在数据库中创建 'WM_CONCAT' 函数。可以通过以下 SQL 语句创建:
CREATE OR REPLACE FUNCTION WM_CONCAT (
p_str IN VARCHAR2,
p_delim IN VARCHAR2 DEFAULT ','
) RETURN VARCHAR2
AS
l_str LONG := p_str || p_delim;
l_idx PLS_INTEGER;
l_res VARCHAR2(32767);
BEGIN
LOOP
l_idx := INSTR(l_str, p_delim);
EXIT WHEN NVL(l_idx, 0) = 0;
l_res := l_res || SUBSTR(l_str, 1, l_idx - 1) || p_delim;
l_str := SUBSTR(l_str, l_idx + LENGTH(p_delim));
END LOOP;
RETURN RTRIM(l_res, p_delim);
END;
/
- 在查询中使用 'WM_CONCAT' 函数。例如:
SELECT deptno, WM_CONCAT(ename)
FROM emp
GROUP BY deptno;
注意:使用第三方库或自定义函数可能存在安全问题和不兼容问题,请谨慎使用。建议使用官方支持的函数。
原文地址: https://www.cveoy.top/t/topic/nAD2 著作权归作者所有。请勿转载和采集!