02/02/2006 - 09:46 por Miguel Puime Gil | Informe spam
Hola a todos:
Para sacar los elementos de una tabla necesito poder utilizar la
recursividad en sql porque se trata de una tabla que graba los elementos de
una estructura de tipo árbol de N elementos.
Cómo utilizar la recursividad en SQL con procedimientos almacenados??

Gracias de antemano.
Miguel Puime.

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
02/02/2006 - 11:06 | Informe spam
Un ejemplo lo tienes en los propios BOL. Echa un vistazo al tema
"Expandir jerarquías"


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Miguel Puime Gil" escribió en el mensaje
news:#
Hola a todos:
Para sacar los elementos de una tabla necesito poder utilizar la
recursividad en sql porque se trata de una tabla que graba los elementos


de
una estructura de tipo árbol de N elementos.
Cómo utilizar la recursividad en SQL con procedimientos almacenados??

Gracias de antemano.
Miguel Puime.


Respuesta Responder a este mensaje
#2 Gustavo Larriera [MVP]
02/02/2006 - 21:28 | Informe spam
En SQL Server 2000 la recursividad es una mera ilusión óptica :-) Utiliza un
algoritmo iterativo para implementar la solución recursiva. En Internet hay
una gran cantidad de ejemplos.

Gustavo Larriera
Uruguay LatAm
Blog: http://sqljunkies.com/weblog/gux/
MVP profile: http://aspnet2.com/mvp.ashx?GustavoLarriera
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.

"Miguel Puime Gil" wrote in message
news:%
Hola a todos:
Para sacar los elementos de una tabla necesito poder utilizar la
recursividad en sql porque se trata de una tabla que graba los elementos
de una estructura de tipo árbol de N elementos.
Cómo utilizar la recursividad en SQL con procedimientos almacenados??

Gracias de antemano.
Miguel Puime.

Respuesta Responder a este mensaje
#3 Isaias
03/02/2006 - 12:24 | Informe spam
Este, es un ejemplo de ULISES

create table tempo ( idclave int, descripcion char(10),
idpadre int )
go
insert into tempo values ( 1, 'AAA', 0 )
insert into tempo values ( 2, 'AAA', 1 )
insert into tempo values ( 3, 'AAA', 1 )
insert into tempo values ( 4, 'AAA', 2 )
insert into tempo values ( 5, 'AAA', 2 )
insert into tempo values ( 6, 'AAA', 4 )
go
create table tempodes ( iddes int, nivel int )
go

2) Grabamos en la tabla tempodes los descendientes del
parámetro solicitado (en eset caso lo pongo en una
variable):

declare @param int
SET @param = 1

declare @nivel int
DELETE FROM tempodes
INSERT INTO tempodes SELECT idclave, 1 FROM tempo WHERE
idpadre = @param
SET @nivel = 2
WHILE ( EXISTS ( SELECT iddes FROM tempodes WHERE nivel =
@nivel - 1 ) )
BEGIN
INSERT INTO tempodes SELECT idclave, @nivel FROM tempo
WHERE idpadre IN ( SELECT iddes FROM tempodes WHERE nivel
= @nivel - 1 )
SET @nivel = @nivel + 1
END

3) Si vemos el detalle de la tabla con SELECT * FROM
tempodes tenemos :

iddes nivel
2 1
3 1
4 2
5 2
6 3

4) Si deseamos que todo se encuentre en una cadena :

declare @cadena varchar(1000)
SET @cadena = ''
select @cadena = @cadena + convert(varchar,iddes) + ';'
from tempodes
select @cadena

tenemos :

-
2;3;4;5;6;
Saludos
IIslas


"Miguel Puime Gil" escribió:

Hola a todos:
Para sacar los elementos de una tabla necesito poder utilizar la
recursividad en sql porque se trata de una tabla que graba los elementos de
una estructura de tipo árbol de N elementos.
Cómo utilizar la recursividad en SQL con procedimientos almacenados??

Gracias de antemano.
Miguel Puime.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida