Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafa-martin

criar algum tipo de proc ou função

Recommended Posts

olha só como posso fazer um select, uma proc ou function não sei... alguma coisa, para que eu consigo ordenar certinho os pais e filhos e os filhos dos filhos e assim vai.eu fiz um case aqui, porém é só para montar de forma correta pais e filhos. porém, eu preciso de alguma coisa que monte certo os filhos abaixo dos seus respectivos pais, os filhos dos filhos, os filhos dos filhos dos filhos e assim vai. entenderam?só que eu não consigo achar uma boa maneira de fazer isso.como posso fazer?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você terá que criar funções recursivas, porém até o SQL Server 2000, ele só permite 32 nível de recursão se eu não me engano. No SQL Server 2005 você não possui esta limitação.

 

Procure por SQL Server 2005 hierarchical no google ou acesse o link http://geekswithblogs.net/juang/archive/20...1/28/61383.aspx

 

Acesse e assine o feed RSS de meu blog. Constantemente posto dicas lá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu passei por este problema estes dias!

BAsta usar a recursividade!!! A idéia é meia confusa mas não é complicada. Dê uma lida pra você entender melhor.

 

Tenho duas tabelas:

arvore_construtor_sistema - Possui todos os recursos do sistemas e seus respectivos filhos.

arvore_construtor_usuario - Possui todos os recursos que o usuário tem acesso no sistema.

 

Parametros:

@nom_recurso CHAR(20), -- Passa o recurso para buscar seus filhos.

@cod_usuario VARCHAR(8) -- Passa o código do usuário

 

Assim eu monto a árvore do sistema de forma diferente para cada usuário.

 

 

CREATE PROCEDURE spu_busca_recursos_filhos    @nom_recurso CHAR(20),    @cod_usuario VARCHAR(8)  AS    SELECT cod_sistema = LTRIM(RTRIM(SIS.cod_sistema)),  cod_usuario = LTRIM(RTRIM(USU.cod_usuario)) ,  nom_recurso = LTRIM(RTRIM(SIS.nom_recurso)) ,  des_recurso = LTRIM(RTRIM(SIS.des_recurso)) ,  nom_recurso_pai = LTRIM(RTRIM(SIS.nom_recurso_pai)) ,  num_recurso_arvore,  num_tipo_acesso = LTRIM(RTRIM(USU.num_tipo_acesso))  FROM arvore_construtor_sistema SIS(NOLOCK)  INNER JOIN arvore_construtor_usuario USU (NOLOCK) ON USU.cod_sistema =  SIS.cod_sistema  AND USU.nom_recurso =  SIS.nom_recurso  AND USU.cod_usuario =  @cod_usuario  WHERE SIS.nom_recurso_pai = @nom_recurso  ORDER BY SIS.num_recurso_arvore, SIS.nom_recurso_pai, SIS.nom_recurso

 

 

So ir chamando essa SP dentro de sua aplicação.

 

 

Att.

 

Precisando posta mais ai!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.