Avatar billede kronsj Nybegynder
21. januar 2010 - 15:13 Der er 1 kommentar og
1 løsning

samling af streng i rekursivt kald

Jeg har en tabel lignende:

ID  NAVN            AFDELING_ID
================================
0  Hovedafd        null
1  Syd              0
2  Nord            0
3  kontor1          1
4  Kontor2          2

Man vil så gerne kunne trække flg tekst ud:

"Hovedafd Syd Kontor1"

Er foreløbigt nået hertil:

create or replace function HENT_AFDELINGER
    (parent_id IN number)
    return varchar2
  is
    CURSOR C1 IS SELECT * FROM AFDELING_TBL WHERE afdeling_id = parent_id;
    afd_sti VARCHAR(500);
  begin
    for afd_rec in C1
      loop
        afd_sti:= afd_sti || HENT_AFDELINGER(afd_rec.id); 
      end loop;
    return afd_sti;
  end;


Men i min jeg kan ikke rigtigt få den til noget, har prøvet med

select HENT_AFDELINGER(0) FROM DUAL

eller...

select HENT_AFDELINGER(id) FROM bj00000t where afdeling_id is null;

Er der nogle oracler der kan give et hint?

Pft
Avatar billede bauerdata Nybegynder
21. januar 2010 - 15:33 #1
Hint! start with  og connect by
http://www.adp-gmbh.ch/ora/sql/connect_by.html
Avatar billede kronsj Nybegynder
21. januar 2010 - 16:19 #2
Fandt selv svaret:

SELECT id,
SYS_CONNECT_BY_PATH (trim(navn),'.') sti
FROM AFDELNG_TBL
CONNECT BY PRIOR id=afdeling_id
START WITH id = 0

http://www.oracle.com/technology/oramag/oracle/05-may/o35asktom.html

- hvis nogen skulle bruge det.

Case closed.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester