[firebase-br] SQL Arvore de dependencias ( select recursiva )

Kléber Caneva kdcc em terra.com.br
Qua Maio 3 14:36:25 -03 2006


Essa SP deve resolver.. Como fiz de cabeça talvez possua algum erro ou tenha 
que ter alguns ajustes.. mas pelo menos dá pra se te uma ideia..

Pra chama-la use: Select * From SP_DEPENDENCIA( 0 );

[]´s

Kléber Caneva

CREATE PROCEDURE SP_DEPENDENCIA( PAI INTEGER );
RETURNS (
   COD_DIS INTEGER,
   NOME VARCHAR(30),
   COD_PAI INTEGER
)
AS
BEGIN

-- Retorna os dados do Pai, se não for o chamada principal
IF (:PAI <> 0) THEN
  BEGIN
     SELECT COD_DIS,  COD_PAI, NOME
     FROM DISTRIB
     Where COD_DIS = :PAI
     Into :COD_DIS, :COD_PAI, :NOME ;
    SUSPEND;
  END

-- Procura por filhos desse pai.
  FOR
     Select
          COD_DIS,  COD_PAI, NOME
     From DISTRIB
     Where COD_PAI = :PAI
     Into :COD_DIS, :COD_PAI, :NOME
 DO
    -- Se existir ele chama como recursivamente a SP para pegar o nome e 
verificar se tem netos.
    FOR
         SELECT COD_DIS,  COD_PAI, NOME
         FROM SP_DEPENDENCIA( :COD_DIS )
         Into :COD_DIS, :COD_PAI, :NOME
     DO
         SUSPEND;

END ^



----- Original Message ----- 
From: "Marcelo Silva" <marcvan em ig.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, May 03, 2006 1:01 PM
Subject: Re: [firebase-br] SQL Arvore de dependencias ( select recursiva )


Foi o que pensei... mas o que sei de SPs não vejo como montar um ResultSet
assim :(




----------------------
Marcelo Silva
(11) 9693-4251
MSN: marcvan em ig.com.br


----- Original Message ----- 
From: "Kléber Caneva" <kdcc em terra.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, May 03, 2006 12:47 PM
Subject: Re: [firebase-br] SQL Arvore de dependencias ( select recursiva )


Você vai precisar de uma SP para isso.

[]´s

Kléber Caneva

----- Original Message ----- 
From: "Marcelo Silva" <marcvan em ig.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, May 03, 2006 11:24 AM
Subject: [firebase-br] SQL Arvore de dependencias ( select recursiva )


Pessoal, tem como buscar uma arvore de dependencia atravez de um SELECT ?

Tenho a seguinte tabela:

DISTRIB

COD_DIS
COD_PAI
NOME

Pela estrutura ja se pode imaginar... preciso trazer uma arvore de
dependencias
tipo

COD_DIS  NOME      COD_PAI

01       MARCELO   00
02       MARCIO    01
03       RENATO    01
04       MARCIA    02
05       ROBERTO   02
06       RICARDO   03
07       JOAO      04
08       GILBERTO  04


Ou seja, quando buscar pelo codigo 02 ele deve me trazer

MARCIO
  MARCIA
    JOAO
    GILBERTO
  ROBERTO

Em um treeview e atravez de funções em PHP e delphi eu consigo, mas tem como
fazer uma select que me traga este resultado ???






----------------------
Marcelo Silva
(11) 9693-4251
MSN: marcvan em ig.com.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

E-mail classificado pelo Identificador de Spam Inteligente Terra.
Para alterar a categoria classificada, visite
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,1146666446.35937.15285.tulear.hst.terra.com.br,3815,Des15,Des15

Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 02/05/2006 / Versão:
4.4.00/4753
Proteja o seu e-mail Terra: http://mail.terra.com.br/





______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa



-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.385 / Virus Database: 268.5.1/326 - Release Date: 27/04/2006



______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa

E-mail classificado pelo Identificador de Spam Inteligente Terra.
Para alterar a categoria classificada, visite
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=kdcc&_l=1,1146672589.948600.6660.mindelo.hst.terra.com.br,5875,Des15,Des15

Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 02/05/2006 / Versão: 
4.4.00/4753
Proteja o seu e-mail Terra: http://mail.terra.com.br/








Mais detalhes sobre a lista de discussão lista