Pregunta sobre Transaccion

26/05/2006 - 14:21 por Matías | Informe spam
Hola a todos, tengo un sp que llama dentro a varios sp´s, lo que hice con
ayuda de uds. es crear una tabla temp., para poder llamar varias veces a los
sp segun la cantidad de registros de la tabla temporal, mi duda es que pasa
si en el sp_update1 se produce un error, por lo que sea, en los sp
anteriores que se realizaron insert se van a volver atrás los cambios?, o
hay que utilizar commint, rollback y como?

Create_procedure sp_principal AS
BEGIN
CREATE TABLE #BULCLE (Curso CHAR(3), IDCiclo INT)
INSERT INTO #BULCLE
Select Curso, IDCiclo from Cursos
IF @@ROWCOUNT = 0
BEGIN
SELECT 'Error, Al generar tabla temporal'
RETURN(0)
END
DECLARE @Curso CHAR(3), @IDCiclo INT -- Inicio el bucle
WHILE EXISTS (SELECT Curso FROM #BULCLE)
BEGIN
SELECT TOP 1 @Curso = Curso, @IDCiclo = IDCiclo FROM #BULCLE
IF @@ROWCOUNT = 0
BREAK
EXEC sp_insert1 (@Curso, @IDCiclo)
EXEC sp_insert2 (@Curso, @IDCiclo)
EXEC sp_update1 (@Curso, @IDCiclo)
EXEC sp_update2 (@Curso, @IDCiclo)
DELETE #BULCLE WHERE Curso = @Curso
CONTINUE
END
END
GO

Muchas gracias..
 

Leer las respuestas

#1 Carlos Sacristán
26/05/2006 - 15:01 | Informe spam
Si no lo metes dentro de una transacción no va a deshacer nada...


Un saludo

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

"Matías" escribió en el mensaje
news:
Hola a todos, tengo un sp que llama dentro a varios sp´s, lo que hice con
ayuda de uds. es crear una tabla temp., para poder llamar varias veces a


los
sp segun la cantidad de registros de la tabla temporal, mi duda es que


pasa
si en el sp_update1 se produce un error, por lo que sea, en los sp
anteriores que se realizaron insert se van a volver atrás los cambios?, o
hay que utilizar commint, rollback y como?

Create_procedure sp_principal AS
BEGIN
CREATE TABLE #BULCLE (Curso CHAR(3), IDCiclo INT)
INSERT INTO #BULCLE
Select Curso, IDCiclo from Cursos
IF @@ROWCOUNT = 0
BEGIN
SELECT 'Error, Al generar tabla temporal'
RETURN(0)
END
DECLARE @Curso CHAR(3), @IDCiclo INT -- Inicio el bucle
WHILE EXISTS (SELECT Curso FROM #BULCLE)
BEGIN
SELECT TOP 1 @Curso = Curso, @IDCiclo = IDCiclo FROM #BULCLE
IF @@ROWCOUNT = 0
BREAK
EXEC sp_insert1 (@Curso, @IDCiclo)
EXEC sp_insert2 (@Curso, @IDCiclo)
EXEC sp_update1 (@Curso, @IDCiclo)
EXEC sp_update2 (@Curso, @IDCiclo)
DELETE #BULCLE WHERE Curso = @Curso
CONTINUE
END
END
GO

Muchas gracias..


Preguntas similares