sql >> Databasteknik >  >> RDS >> Oracle

Oracle-funktion:Replikera wm_concat

Får du ett felmeddelande när du använder wm_concat? Till skillnad från funktioner som to_char ägs det av wmsys och du kan behöva använda wmsys.wm_concat för att använda det. (såvida du inte skapar de nödvändiga synonymerna förstås).

Nu till själva frågan,

Denna teknik kallas strängaggregation.

Du kan hitta många andra alternativ här.

http://www.oracle-base.com/articles/ 10g/StringAggregationTechniques.php För andra metoder, Sök efter "stragg" på http://asktom.oracle.com En annan användbar länk:http://www.orafaq.com/node/2290

Detta är förmodligen den mest använda. Många team skriver sina egna anpassade funktioner som mer eller mindre gör samma sak.

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

medan den här lösningen fungerar för varchar2 och nummer, kan den bästa generiska lösningen byggas med Oracle ODCIAggregate-gränssnitt.

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

Implementering av detsamma finns på den första länken ovan på www.oracle-base.com



  1. MySQL SELECT AS kombinera två kolumner till en

  2. Använder jag Java PooledConnections korrekt?

  3. ORA-01775:looping kedja av synonymer

  4. GreenDao freemaker.jar saknas