sql >> Database >  >> RDS >> Oracle

Oracle-functie:wm_concat repliceren

Krijgt u een foutmelding wanneer u wm_concat gebruikt? In tegenstelling tot functies zoals to_char, is het eigendom van wmsys en moet u mogelijk wmsys.wm_concat gebruiken om het te gebruiken. (tenzij je de nodige synoniemen aanmaakt natuurlijk).

Nu voor de eigenlijke vraag,

Deze techniek wordt stringaggregatie genoemd.

Je zou hier veel andere alternatieven kunnen vinden.

http://www.oracle-base.com/articles/ 10g/StringAggregationTechniques.php Zoek voor andere methoden naar "stragg" op http://asktom.oracle.com Nog een handige link:http://www.orafaq.com/node/2290

Dit is waarschijnlijk de meest gebruikte. Veel teams schrijven hun eigen aangepaste functies die min of meer hetzelfde doen.

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

hoewel deze oplossing werkt voor varchar2 en nummer, kan de beste generieke oplossing worden gebouwd met behulp van de Oracle ODCIAggregate-interface.

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

Implementatie voor hetzelfde is op de eerste link hierboven op www.oracle-base.com



  1. Een enkele waarde uit de database halen via Entity Framework

  2. ORA-01882 verkrijgen:tijdzoneregio niet gevonden met Oracle UCP, op aws ec2-instantie?

  3. jQuery UI - Autocomplete versnellen

  4. Reguliere expressie gebruiken binnen een opgeslagen procedure