Hola, he conseguido realizar un sp con update y leyendo la estructura que
necesitaba,
Pero necesito crear un trigger del siguiente modo
1º que no se ejecute si la condicion ClienteEstructura.Nivel <> 7 es cierta
2º Debe actualizar en la ficha del cliente los datos leidos de la
estructura, pero como desconozco el codigo del cliente al que debe
actualizar, debería serlo sobre el registro insertado.
Este es el procedimiento que tengo y así me funciona manualmente
Alter PROCEDURE spEstructura
@Cliente as int AS
Declare @Gerente AS Int, @Zona AS Int, @Delegado AS Int, @Equipo AS Int
Declare TGEstructura CURSOR FOR
SELECT ClienteEstructura1.PagAgeCodigo AS Nivel4,
ClienteEstructura2.PagAgeCodigo AS Nivel3,
ClienteEstructura3.PagAgeCodigo AS Nivel2,
ClienteEstructura4.PagAgeCodigo AS Nivel1
FROM dbo.ClienteEstructura INNER JOIN
dbo.ClienteEstructura ClienteEstructura1 ON
dbo.ClienteEstructura.PagPirCodigo = ClienteEstructura1.PagPirCodigo
AND
dbo.ClienteEstructura.PagNodoPadre = ClienteEstructura1.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura2 ON
ClienteEstructura1.PagPirCodigo = ClienteEstructura2.PagPirCodigo
AND
ClienteEstructura1.PagNodoPadre = ClienteEstructura2.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura3 ON
ClienteEstructura2.PagPirCodigo = ClienteEstructura3.PagPirCodigo
AND
ClienteEstructura2.PagNodoPadre = ClienteEstructura3.PagNodo
INNER JOIN
dbo.ClienteEstructura ClienteEstructura4 ON
ClienteEstructura3.PagNodoPadre = ClienteEstructura4.PagNodo
AND
ClienteEstructura3.PagPirCodigo = ClienteEstructura4.PagPirCodigo
WHERE (dbo.ClienteEstructura.PagNivCodigo = 7) AND
(dbo.ClienteEstructura.PagAgeCodigo = @Cliente)
Open Estructura
/* Actualizar ficha cliente */
FETCH NEXT FROM TGEstructura
INTO @Nivel4, @Nivel3, @Nivel2, @Nivel1
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Cliente SET ClienteNivel4=@Nivel4, ClienteNivel3=@Nivel3,
ClienteNivel2=@Nivel2, ClienteNivel1=@Nivel1
WHERE CliCodigo=@Cliente
END
Close TGEstructura
Deallocate TGEstructura
Muchas gracias por vuestra ayuda
Angel Zapata
Murcia - España
Leer las respuestas