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"
==

Preguntas similare

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"
=
Respuesta Responder a este mensaje
#2 Tinoco
20/01/2005 - 14:01 | Informe spam
Hola,

Realmente no puedo ver el problema, te recomiendo utilizar el Profiler de
SQL, para revisar como se ejecutan estos comandos al utilizar VB, puede ser
que los parametros enviados al SP se vean afectados...

Hermilson Tinoco

"egloeda arrobita teleline dot es" <"eglo" wrote:

Simplemente el SP se ejecuta pero devuelve NULL

Lo curioso del asunto es que si desde Analizador de consultas fuerzo
ejecutar el disparador, este funciona.

Pero cuando una aplicación escrita en VB6 que se ejecuta en un
navegador, el disparador no funciona de forma correcta

Carlos Sacristán wrote:
> 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"
>>=> >
>
>



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

"La verdad os hara libres"
=>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida