Funcion Recursiva

02/09/2003 - 04:05 por Carlos | Informe spam
Hola amigos del Foro, ire a mi pregunta:

Tengo una tabla como esta:

Id_Tabla | Cod_Fila | Id_Padre
-
10 | 05 | null
20 | 13 | 10
30 | 04 | 20

estoy tratando de desarrollar una funcion que me devuelva:
05.13.04 es decir la concatenacion del campo: Cod_Fila

a esta funcion le pasaria como parametro el Id_Tabla
por ejemplo:
fCodUbicacion (@Id_Tabla) = fCodUbicacion (30)

y que vaya llamandose con el identificador padre (campo: Id_Padre) y
concatenandose hasta que al final encuentre el valor Id_Padre = null y
termine el proceso

Espero su ayuda, gracias de antemano

Preguntas similare

Leer las respuestas

#6 Gustavo Larriera [MVP]
02/09/2003 - 17:50 | Informe spam
Jesus me has ahorrado el trabajo de buscar una solucion iterativa :-) muy
buen ejemplo, gracias.

Gustavo Larriera, MSFT MVP-SQL
Uruguay LatAm

This message is provided "AS IS" with no warranties expressed or implied,
and confers no rights.


"SqlRanger" wrote in message
news:
Bueno ahí va la versión iterativa de la función:

create function Localizacion2( @IdTabla int )
returns varchar(50)
as
begin

declare @Localizacion varchar(50), @CodFila char(2), @IdPadre int
while 1 = 1
begin

select @CodFila = CodFila, @IdPadre = IdPadre
from Tabla
where IdTabla = @IdTabla
if @Localizacion is null
set @Localizacion = @CodFila
else
set @Localizacion = @CodFila + '.' + @Localizacion
if @IdPadre is null
break
else
set @IdTabla = @IdPadre
end

return @Localizacion
end

go


Es mejor la versión iterativa ya que es más eficiente y además no tiene el
límite de 32 como nivel máximo de anidamiento


Saludos:

Jesús López
MVP Microsoft .NET
MCP SQL Server


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