Repetimo: Cómo enviar un mail al fallar un SP

23/07/2003 - 13:39 por naimps | Informe spam
Haber si nos aclaramos.

Este es el código de uno de los SP que utilizo.

CREATE PROCEDURE dbo.ic_spBilleteModifAgencia
(
@usuario tinyint, -- Indica qué usuario lo realiza.
@billete varchar(10), -- Billete a modificar.
@siglas char(3),
@agencia smallint,
@imprimir varchar(500) OUTPUT,
@error int OUTPUT,
@mensaje varchar(150) OUTPUT
)
AS

BEGIN

DECLARE @bil_id int SET @bil_id = left(@billete, charindex (',',
@billete) - 1)
DECLARE @pasaje varchar(100)
DECLARE @vehiculo varchar(50) SET @vehiculo = '{'
DECLARE @grupoida int
DECLARE @grupovuelta int
DECLARE @formapago tinyint
DECLARE @estado char(1)

SET @error = 1
SET @imprimir = '0'

SELECT @grupoida = bil_grupoida, @grupovuelta = bil_grupovuelta,
@formapago = bil_for_codi, @estado = bil_estado
FROM ic_billetes
WHERE (bil_id = @bil_id)

SELECT @pasaje = ic_bilper.bip_nombre + '{' + ic_bilper.bip_apell1 + '{'
+ ic_bilper.bip_apell2 + '{' + ic_bilper.bip_dni + '{{'
+ convert(varchar(6), ic_bilper.bip_completo_i) + '{'
+ convert(varchar(6), ic_bilper.bip_tap_id_i) + '{'
+ convert(varchar(6), ic_bilper.bip_nac_id_i) + '{{'
+ convert(varchar(6), ic_bilper.bip_completo_v) + '{'
+ convert(varchar(6), ic_bilper.bip_tap_id_v) + '{'
+ convert(varchar(6), ic_bilper.bip_nac_id_v)
+ '{' + convert(varchar(6), ic_bilper.bip_tir_id)
+ '{' + convert(varchar(6), ic_bilper.bip_tasas)
+ '{' + convert(varchar(6), ic_bilper.bip_sexo)
+ '{' + convert(varchar(6), ic_bilper.bip_edad)
+ '{' + convert(varchar(6), ic_desperbil.dpb_tid_id)
+ '{'
FROM ic_bilper
INNER JOIN ic_desperbil ON ic_bilper.bip_id = ic_desperbil.dpb_bip_id
WHERE (ic_bilper.bip_bil_id = @bil_id)

SELECT @vehiculo = biv_matricula + '{' + biv_marca + '{'
+ biv_modelo + '{0{'
+ convert(varchar(6), biv_metros) + '{'
+ convert(varchar(6), biv_tav_id) + '{'
+ convert(varchar(6), biv_tdv_id) + '{'
FROM ic_bilveh
WHERE (biv_bil_id = @bil_id)

BEGIN TRAN

EXEC iscomar.ic_spBILANULARBILLETE
@billete,
1,
@usuario,
0,
@siglas,
@formapago,
@imprimir OUTPUT,
@error OUTPUT
IF (@error <> 0)
BEGIN
ROLLBACK TRANSACTION
SET @mensaje = 'ERROR EN MODIFICAR EL CODIGO DE AGENCIA (1).'
RETURN
END

EXEC iscomar.ic_spBILLETENUEVODEBILLETE
@pasaje,
@vehiculo,
@grupoida,
@grupovuelta,
@bil_id,
@usuario,
0,
0,
@siglas,
'',
@agencia,
@imprimir OUTPUT,
@error OUTPUT,
1,
',',
@estado
IF (@error <> 0)
BEGIN
ROLLBACK TRANSACTION
SET @mensaje = 'ERROR EN MODIFICAR EL CODIGO DE AGENCIA (2.' +
cast(@error as varchar) + ').'
RETURN
END

COMMIT TRAN

SET @mensaje = ''
SET @error = 0
SET @imprimir = @imprimir + '{'

END


Cuando hago la llamada "EXEC iscomar.ic_spBILANULARBILLETE", si por
lo que sea el parámetro @usuario es mayor de 255, me dará un error,
pues en el SP ic_spBILANULARBILLETE está declarado como tinyint.

¿Cómo puedo llamar a un SP para que me enevie por email el error que da el
SQLServer? El SP para mandar el mail lo tengo y funciona.

Muchas gracias
 

Leer las respuestas

#1 Emilio Boucau
23/07/2003 - 16:49 | Informe spam
Hola,

mira xp_sendmail en los BOL.

Saludos !

Emilio Boucau
Microsoft MVP SQL Server
http://www.portalsql.com
PASS Spanish Group
http://www.sqlpass.org

Buenos Aires - Argentina

Preguntas similares