Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc almacenado

Estas en el tema de Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc almacenado en el foro de SQL Server en Foros del Web. Hola a todos, hoy vengo con una duda que espero me puedan responder y la respuesta sea afirmativa. Tengo un proc almacenado que hace x ...
  #1 (permalink)  
Antiguo 29/07/2013, 12:46
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc almacenado

Hola a todos, hoy vengo con una duda que espero me puedan responder y la respuesta sea afirmativa.

Tengo un proc almacenado que hace x cosas + una llamada a otro proc almacenado recursivo, si hubiera un error en alguna de las llamadas al proc almacenado recursivo puedo hacer rollback de eso, pero me gustaria saber si ademas, cachando el error, y hago rollback del procedimiento almacenado que mandó llamar al proc almacenado recursivo, me hace rollback a todo (junto con lo que haya hecho el proc almacenado recursivo) o solo de alguna parte (todo excepto lo del proc almacenado recursivo).

Aún no tengo el proc almacenado recursivo, es algo que acabo de ver que voy a necesitar, teniéndolo pongo el código aunque no creo que sirva de mucho, a final de cuentas son querys + el proc almacenado recursivo.

Gracias de antemano
  #2 (permalink)  
Antiguo 29/07/2013, 13:32
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 4 meses
Puntos: 40
Respuesta: Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc

Un Rollback a procedimiento almacenado incluye a todos los procedimientos ejecutados directamente o indirectamente desde el, incluso el procedimiento recursivo y todos sus recursiones.

Utilizar un procedimiento recursivo es generalmente muy mala idea y no es recomendable.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 29/07/2013, 13:50
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc

para que usas recursion?? como bien lo comenta el compañero GeriReshef no es muy recomendado cuando usas transacciones dentro de la recursividad, quizas para obtener ciertos valores si se recomendada la recursividad pero para aplicar modificaciones a la base de datos no.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 29/07/2013, 16:34
 
Fecha de Ingreso: abril-2009
Mensajes: 341
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc

Les explico lo que necesito hacer.

Estoy desarrollando una página de pago de comisiones multinivel, actualmente hay 6 niveles pero puede haber mas, se les da comisiones por los consumos hechos durante x periodo (del 11 de enero al 10 de febrero, por ejemplo) que hagan sus nodos hijos hasta 6 niveles de profundidad, los días 10 de cada mes subirán un csv con dichos consumos. El reparto de comisión solo se le hace a nodos que tienen 170 pesos o mas de consumo.

Para que esto funcione de forma correcta, una opción es asignarle a cada nodo el nivel en el que está, de forma que registre el consumo a partir del nivel superior para abajo y así poder determinar si un nodo debe recibir comisión por sus nodos hijos o no, ahora, ese no es el problema (aun me falta esta parte pero esta fácil, casi tengo todo, solo me falta un select para checar si hay consumo en ese periodo y si es mayor a 170), el problema, y el por que necesito la recursividad es que, pueden cambiar de padre a un nodo, entonces, esto puede cambiar a que nivel está, por ejemplo si es nivel 2 y tiene hijos, nietos, etc, sus hijos son de nivel 3, pero si le cambian el nodo padre a uno de nivel 2, el nodo pasa a nivel 3 y sus hijos se vuelven de nivel 4 nietos el 5, etc, es por eso que necesito la recursividad, para checar todo el arbol del socio y hacer el cambio en cada socio hijo, nieto, etc.

Igual y es mucho enrrollarse, el concepto es sencillo (aunque no parezca con tanto rollo), el problema es que a fuerza debe ser una función recursiva en sql para poder recorrer el arbol completo a partir de un nodo base y hacer el cambio de nivel que corresponda.


Pd: el nivel es un campo en la tabla, ademas de no_id y no_id2 (que es el id del nodo padre).
salu2.
  #5 (permalink)  
Antiguo 29/07/2013, 16:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Duda sobre procedimiento almacenado recursivo que esta dentro de otro proc

creo que te estas complicando demasiado, podrias sacar la recursividad del arbol e insertar estos valores en un tabla "temporal" o en una tabla para este proposito, ya con los valores de los hijos y padres poder hacer el calculo de comisiones o en base a esta tabla realizar las operaciones que necesitas, no necesariamente realizar los cambios en tu tabla directamente en el proceso recursivo :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: almacenado, procedimiento, recursivo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:33.