Com connect by você não consegue resolver o seu problema?
________________________________ De: Roberto Souza Silva <rssp...@gmail.com> Para: oracle_br@yahoogrupos.com.br Enviadas: Quarta-feira, 5 de Agosto de 2009 20:57:10 Assunto: [oracle_br] Função recursiva com CURSOR Caros amigos, boa tarde. Estou tendo alguns problemas com recursividade. Vejam o código abaixo: CREATE OR REPLACE FUNCTION teste(piCodigo IN integer, piCodigoPai IN integer) RETURN VARCHAR2 AS vsResult VARCHAR2(4000) ; -- FUNCTION Filhos(i INTEGER) RETURN VARCHAR2 AS vs VARCHAR2(1000) ; vi INTEGER; CURSOR crCodigos(p1 IN INTEGER) IS SELECT codigo FROM tabela WHERE codigopai=p1; BEGIN FOR x IN crCodigos(i) LOOP if vs is null then vs:=x.codigo| |','||Filhos( x.codigo) ; ELSE vs:=vs||','| |x.codigo| |','||Filhos( x.codigo) ; END IF; END LOOP; CLOSE crCodigos; RETURN vs; END; -- BEGIN . . vsResult:=Filhos( piCodigo) ; . . RETURN vsResult; END teste3; Bem, não sei se deu para ficar claro, mas o que quero é correr uma tabela que tem uma FK para ela mesma. O problema com o código acima é o ORA-06511 (curso já está aberto). Tentei implementar TYPEs, mas me faltam conhecimentos para lidar com eles. Procurei na lista por "recursiva" e não encontrei nada a respeito. Logo não me restou alternativa, tenho que pedir ajuda dos universitários. ehhe Alguém feria a gentileza? Forte abraço a todos e obrigado. Roberto [As partes desta mensagem que não continham texto foram removidas] ____________________________________________________________________________________ Veja quais são os assuntos do momento no Yahoo! +Buscados http://br.maisbuscados.yahoo.com [As partes desta mensagem que não continham texto foram removidas]