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]

Responder a