Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como saber si un SP se ejecuto sin error

Estas en el tema de Como saber si un SP se ejecuto sin error en el foro de SQL Server en Foros del Web. Hola, alguien me podria ayudar, tengo un store procedure que lo que hace es agregar un registro a una tabla, hace un insert en dicha ...
  #1 (permalink)  
Antiguo 01/11/2007, 10:59
Avatar de Romi28x  
Fecha de Ingreso: octubre-2007
Mensajes: 185
Antigüedad: 16 años, 6 meses
Puntos: 0
De acuerdo Como saber si un SP se ejecuto sin error

Hola, alguien me podria ayudar, tengo un store procedure que lo que hace es agregar un registro a una tabla, hace un insert en dicha tabla, desde VB.NET 2005 le paso los parametros al SP, lo ejecuto y todo lo hace muy bien, el me hace el insert a la tabla y en VBNET yo mando un mensaje diciendo que el registro se agrego con éxito.

pero que pasa si mi SP por alguna razón no me hace el insert, como devuelve un mensaje de error que me indique en VB que el insert no se efectuo y asi mandar un msg que diga algo como que el registro no se agrego, como valido esto en mi SP.

gracias
  #2 (permalink)  
Antiguo 01/11/2007, 11:12
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Como saber si un SP se ejecuto sin error

El mismo SP te deberia enviar el error, si lo hizo o no lo hizo, comunmente se establece un retorno entre el sp y el front, ejemplo:

-- En el store existe una rutina de inserccion
INSERT INTO.............................................. ......
IF @@ROWCOUNT = 0
BEGIN
SELECT -1, 'Error, Al momento de realizar el insert...........'
RETURN(0)
END
SELECT 1,'Inserccion satisfactoria'
RETURN(0)

El front (VBNET), deberia "cachar" el mensaje de retorno y tomar decisioines.

Espero haberme explicado.
  #3 (permalink)  
Antiguo 01/11/2007, 12:05
Avatar de Romi28x  
Fecha de Ingreso: octubre-2007
Mensajes: 185
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Como saber si un SP se ejecuto sin error

Ok perfecto, gracias, ahora ya estoy claro, ahora si podre hacer mi validación...
  #4 (permalink)  
Antiguo 01/11/2007, 14:47
Avatar de royrojas  
Fecha de Ingreso: diciembre-2004
Mensajes: 458
Antigüedad: 19 años, 3 meses
Puntos: 3
Re: Como saber si un SP se ejecuto sin error

yo prefiero usar el @@Error

luego de hacer el insert llamas el manejo de errores y podrias hacer algo asi

--Esto es muy especifico a un error
IF @@ERROR = 547
PRINT N'A check constraint violation occurred.';

--O podiras hacer algo mas generico
IF @@ERROR <> 0
BEGIN
-- Return 99 to the calling program to indicate failure.
PRINT N'Se produjo un error insertando los datos';
RETURN 99;
END
ELSE
BEGIN
-- Return 0 to the calling program to indicate success.
PRINT N'El insert se hiso de forma correcta';
RETURN 0;
END;
__________________
roy rojas
Programación en Español: DotNetcr.com
  #5 (permalink)  
Antiguo 01/11/2007, 15:03
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Como saber si un SP se ejecuto sin error

Perfecto, solo que a veces (muchas veces), el store inserta, no en una tabla, si no en varias tablas y a veces, deseas un mensaje personalizado:

INSERT INTO CLIENTE VALUES............................................ .. ......
IF @@ROWCOUNT = 0
BEGIN
SELECT -1, 'Error, No se han podido registrar los datos del Cliente '
RETURN(0)

Con esto, el front, solo se encargaria de "desplegar" el mensaje de error.

A final de cuentas, creo que es a gusto del grupo de desarrollo en conjunto con la gente de bases de datos.
  #6 (permalink)  
Antiguo 01/11/2007, 15:40
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
De acuerdo Re: Como saber si un SP se ejecuto sin error

Cita:
Iniciado por iislas Ver Mensaje
A final de cuentas, creo que es a gusto del grupo de desarrollo en conjunto con la gente de bases de datos.
Asi es...

yo prefiero utilizar el @@Error y combinado con el mensaje personalizado, pero retornando el codigo de error en el parametro Return y el mensaje en una variable tipo output, para evitar el resultset.

Un saludo a todos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:54.