Problema al ejecutar un SP dentro de un disparador

20/01/2005 - 11:54 por egloeda arrobita teleline dot es | Informe spam
Buenas todos

Tengo un probleam al ejecutar un SP dentro de un disparador

El ejecutar los SP no me devuelve el valor que espero, si ejecuto el SP
de forma aislada funciona

El codigo del SP es


CREATE PROCEDURE _ESTADISTICA_TIEMPO_REPARACION_TOTAL
@intIdReparacion INTEGER,
@intSegundos INTEGER OUTPUT
AS
SET NOCOUNT ON
set dateformat dmy
SELECT @intSegundosÚTEDIFF(SS,TELEFONOS.FECHAIN,TIEMPOS.FECHAFIN)
FROM TELEFONOS,TIEMPOS
WHERE TELEFONOS.INDICE=TIEMPOS.JOBNUMBER
AND CONTADOR=1 AND JOBNUMBER=@intIdReparacion



El codigo del disparador

ALTER TRIGGER tu_TIEMPOS_TREPARACION ON TIEMPOS FOR UPDATE
AS

SET NOCOUNT ON
DECLARE @intNumCols INTEGER
DECLARE @intSegCal INTEGER
DECLARE @intSegTol INTEGER
DECLARE @intIdRep INTEGER
DECLARE @strMens VARCHAR(100)

SET @intSegCal=0
SET @intSegTol=0

SELECT @intNumCols=@@ROWCOUNT
IF @intNumCols=0
RETURN

IF UPDATE(FECHAFIN)
BEGIN
SET @strMens='tu_TIEMPOS_TREPARACION =>
@intNumCols->'+CONVERT(CHAR,@intNumCols)
EXEC master..xp_logevent 60000, @strMens, WARNING

IF (@intNumCols>1)
BEGIN
RAISERROR ('Actualización erronea',16,1) WITH log
ROLLBACK TRANSACTION
RETURN
END

SELECT TOP 1 @intIdRep=INSERTED.JOBNUMBER FROM INSERTED

SET @strMens='tu_TIEMPOS_TREPARACION =>
@intIdRep->'+CONVERT(CHAR,@intIdRep)
EXEC master..xp_logevent 60001,@strMens, WARNING

EXEC _ESTADISTICA_TIEMPO_REPARACION_TOTAL
@intIdRep,@intSegTol OUTPUT
SET @strMens='tu_TIEMPOS_TREPARACION =>
@intSegTol->'+CONVERT(CHAR,@intSegTol)
EXEC master..xp_logevent 60002,@strMens, WARNING

UPDATE TELEFONOS
SET SEGUNDOSREPCAL=@intSegCal,SEGUNDOSREPTOTAL=@intSegTol
WHERE INDICE=@intIdRep

END
RETURN


¿Me podeis ayudar?


=Emilio Garcia Loeda
Blog: www.loeda.net
FTP : ftp.loeda.net

"La verdad os hara libres"
==
 

Leer las respuestas

#1 Carlos Sacristán
20/01/2005 - 12:13 | Informe spam
No detallas cuál es el problema exactamente, si es que te muestra algún
mensaje de error o es que no se ejecuta como debieran los procedimientos
almacenados


Un saludo

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

"egloeda arrobita teleline dot es" <"egloeda arrobita teleline dot es">
escribió en el mensaje news:OeZaK6t$
Buenas todos

Tengo un probleam al ejecutar un SP dentro de un disparador

El ejecutar los SP no me devuelve el valor que espero, si ejecuto el SP
de forma aislada funciona

El codigo del SP es


CREATE PROCEDURE _ESTADISTICA_TIEMPO_REPARACION_TOTAL
@intIdReparacion INTEGER,
@intSegundos INTEGER OUTPUT
AS
SET NOCOUNT ON
set dateformat dmy
SELECT @intSegundosÚTEDIFF(SS,TELEFONOS.FECHAIN,TIEMPOS.FECHAFIN)
FROM TELEFONOS,TIEMPOS
WHERE TELEFONOS.INDICE=TIEMPOS.JOBNUMBER
AND CONTADOR=1 AND JOBNUMBER=@intIdReparacion



El codigo del disparador

ALTER TRIGGER tu_TIEMPOS_TREPARACION ON TIEMPOS FOR UPDATE
AS

SET NOCOUNT ON
DECLARE @intNumCols INTEGER
DECLARE @intSegCal INTEGER
DECLARE @intSegTol INTEGER
DECLARE @intIdRep INTEGER
DECLARE @strMens VARCHAR(100)

SET @intSegCal=0
SET @intSegTol=0

SELECT @intNumCols=@@ROWCOUNT
IF @intNumCols=0
RETURN

IF UPDATE(FECHAFIN)
BEGIN
SET @strMens='tu_TIEMPOS_TREPARACION =>
@intNumCols->'+CONVERT(CHAR,@intNumCols)
EXEC master..xp_logevent 60000, @strMens, WARNING

IF (@intNumCols>1)
BEGIN
RAISERROR ('Actualización erronea',16,1) WITH log
ROLLBACK TRANSACTION
RETURN
END

SELECT TOP 1 @intIdRep=INSERTED.JOBNUMBER FROM INSERTED

SET @strMens='tu_TIEMPOS_TREPARACION =>
@intIdRep->'+CONVERT(CHAR,@intIdRep)
EXEC master..xp_logevent 60001,@strMens, WARNING

EXEC _ESTADISTICA_TIEMPO_REPARACION_TOTAL
@intIdRep,@intSegTol OUTPUT
SET @strMens='tu_TIEMPOS_TREPARACION =>
@intSegTol->'+CONVERT(CHAR,@intSegTol)
EXEC master..xp_logevent 60002,@strMens, WARNING

UPDATE TELEFONOS
SET SEGUNDOSREPCAL=@intSegCal,SEGUNDOSREPTOTAL=@intSegTol
WHERE INDICE=@intIdRep

END
RETURN


¿Me podeis ayudar?


=> Emilio Garcia Loeda
Blog: www.loeda.net
FTP : ftp.loeda.net

"La verdad os hara libres"
=

Preguntas similares