gpt4 book ai didi

甲骨文函数 : Replicate wm_concat

转载 作者:行者123 更新时间:2023-12-04 23:10:27 26 4
gpt4 key购买 nike

我目前正在处理 Crystal Reports 中的一个项目,该项目拒绝使用 Oracle 10g 中允许的未记录函数 WM_CONCAT。
这是WM_CONCAT头信息

WM_CONCAT(p1 IN VARCHAR2) RETURN VARCHAR2

要使用 WM_CONCAT,我将其传递给以下内容: WM_CONCAT(column1);此函数似乎接受 varchar2 类型的列,并从该列返回以逗号分隔的值列表。我目前有这个功能的自定义版本(在我的工作计算机上),但它不是最佳的并且缺乏可重用性。任何人都可以提供像 WM_CONCAT 这样我可以使用的好的、可重复使用的函数吗?

最佳答案

使用 wm_concat 时是否收到错误消息?
与 to_char 等函数不同,它归 wmsys 所有,您可能需要使用 wmsys.wm_concat 才能使用它。 (当然,除非您创建必要的同义词)。

现在对于实际的问题,

这种技术称为字符串聚合。

你可以在这里找到很多其他的选择。

http://www.oracle-base.com/articles/10g/StringAggregationTechniques.php
其他方法请在 http://asktom.oracle.com 上搜索“stragg”
另一个有用的链接:http://www.orafaq.com/node/2290

这可能是最常用的一个。
许多团队编写自己的自定义函数,它们或多或少都是这样做的。

CREATE OR REPLACE FUNCTION get_employees (p_deptno  in  emp.deptno%TYPE)
RETURN VARCHAR2
IS
l_text VARCHAR2(32767) := NULL;
BEGIN
FOR cur_rec IN (SELECT ename FROM emp WHERE deptno = p_deptno) LOOP
l_text := l_text || ',' || cur_rec.ename;
END LOOP;
RETURN LTRIM(l_text, ',');
END;
/
SHOW ERRORS

虽然此解决方案适用于 varchar2 和 number,但可以使用 Oracle ODCIAggregate 接口(interface)构建最佳通用解决方案。

http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10800/dciaggfns.htm#sthref462

相同的实现在上面的第一个链接 www.oracle-base.com

关于甲骨文函数 : Replicate wm_concat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1967796/

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