Oracle
 sql >> Base de données >  >> RDS >> Oracle

Fonction Oracle :Répliquer wm_concat

Recevez-vous un message d'erreur lorsque vous utilisez wm_concat ? Contrairement à des fonctions telles que to_char, il appartient à wmsys et vous devrez peut-être utiliser wmsys.wm_concat pour l'utiliser. (sauf si vous créez les synonymes nécessaires bien sûr).

Passons maintenant à la vraie question,

Cette technique est appelée agrégation de chaînes.

Vous pouvez trouver beaucoup d'autres alternatives ici.

http://www.oracle-base.com/articles/ 10g/StringAggregationTechniques.php Pour les autres méthodes, recherchez "stragg" sur http://asktom.oracle.com Autre lien utile :http://www.orafaq.com/node/2290

C'est probablement la plus utilisée. De nombreuses équipes écrivent leurs propres fonctions personnalisées qui font plus ou moins la même chose.

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

bien que cette solution fonctionne pour varchar2 et number, la meilleure solution générique peut être créée à l'aide de l'interface Oracle ODCIAggregate.

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

La mise en œuvre pour le même est au premier lien ci-dessus à www.oracle-base.com