Oracle
 sql >> Database >  >> RDS >> Oracle

Funzione Oracle:replica wm_concat

Viene visualizzato un messaggio di errore quando si utilizza wm_concat? A differenza di funzioni come to_char, è di proprietà di wmsys e potrebbe essere necessario utilizzare wmsys.wm_concat per utilizzarlo. (a meno che tu non crei i sinonimi necessari ovviamente).

Ora per la domanda vera e propria,

Questa tecnica è chiamata aggregazione di stringhe.

Potresti trovare molte altre alternative qui.

http://www.oracle-base.com/articles/ 10 g/StringAggregationTechniques.php Per altri metodi, cerca "stragg" su http://asktom.oracle.com Un altro link utile :http://www.orafaq.com/node/2290

Questo è probabilmente il più utilizzato. Molti team scrivono le proprie funzioni personalizzate che più o meno fanno lo stesso.

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

mentre questa soluzione funziona per varchar2 e number, la migliore soluzione generica può essere creata utilizzando l'interfaccia Oracle ODCIAggregate.

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

L'implementazione per lo stesso è al primo link sopra su www.oracle-base.com