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

Errores SQL

Estas en el tema de Errores SQL en el foro de Bases de Datos General en Foros del Web. Estoy utilizando SQL Server 2000. Me gustaría saber como conseguir que un procedimiento almacenado no detenga su ejecución al producirse un error en, por ejemplo, ...
  #1 (permalink)  
Antiguo 15/04/2002, 06:58
 
Fecha de Ingreso: abril-2002
Mensajes: 1
Antigüedad: 22 años
Puntos: 0
Errores SQL

Estoy utilizando SQL Server 2000. Me gustaría saber como conseguir que un procedimiento almacenado no detenga su ejecución al producirse un error en, por ejemplo, una inserción, y que el código de dicho error se retorne en la variable @@ERROR
Gracias!!!

  #2 (permalink)  
Antiguo 17/04/2002, 08:38
Avatar de eskillar  
Fecha de Ingreso: enero-2002
Ubicación: Euskadi
Mensajes: 34
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Errores SQL

Hola Rakel,

puedes tratar la sentencia que te da problemas como una transacción, es decir un bloque de código cuya ejecución se debe realizar de un modo completo, descartandose la misma en caso de que haya algún problema (errores en los parámetros recibidos o intento de acceder a un mismo conjunto de registros por parte de dos aplicaciones en una plataforma cliente-servidor).

Hay tienes un sencillo ejemplo de su manejo, aunque puedes consultar en la ayuda del TRANSACT SQL las instrucciones concretas. Sino vuelve a preguntar.

Salu2 y suerte ;)
Diego


CREATE PROCEDURE MiProcedimiento
@param1 varchar(32),
@param2 varchar(32)
AS

begin transaction
-- iniciamos el bloque

insert into miTabla (campo1,campo2) select @param1, @param2
if @@error <>0 goto canc_tr

commit transaction
-- confirmamos la transacción (se ejecutará si no se han producido errores)
goto terminar

canc_tr:
rollrollback transaction
-- descartamos los cambios
select @@error

terminar:
GO

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 03:42.