Los errores de código en el SQL Server pueden tratarse de forma similar a lenguajes como C# o C++. Constan del bloque try y del bloque catch, donde el bloque catch controla la excepción que se puede producir en el bloque try. Deben de ir primero el bloque try, seguido inmediatamente del bloque catch.
El SQL Server presenta varios tipos de errores, que los mostramos a continuacin:
- ERROR_NUMBER() devuelve el número de error.
- ERROR_MESSAGE() devuelve el texto completo del mensaje de error. El texto incluye los valores suministrados para los parámetros sustituibles, como longitudes, nombres de objeto u horas.
- ERROR_SEVERITY() devuelve la gravedad del error.
- ERROR_STATE() devuelve el número de estado del error.
- ERROR_LINE() devuelve el número de línea dentro de la rutina en que se produjo el error.
- ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador en que se produjo el error.Algo que cabe mencionar son las dos situaciones donde el bloque try/catch no los puede controlar como lo son:- Errores de Compilación- Errores que se producen durante la recompilación de instruccionesInstrucción rollback : Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción y de igual manera libera los recursos que mantiene la transacción.Instrucción commit: Hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacciónEn el siguiente ejemplo se muestra el machote que seguimos en cada uno de nuestros procedimientos, para hacer uso de un manejo efectivo de errores y excepciones.
@Documento int,
@Administrador int,
@Descripcion varchar (50),
@Contenido text
as
begin
begin try
begin transaction
insert HistoricoModDocumento(FKDocumento,FKAdministrador,DescripcionCambio,Contenido)
values(@Documento,@Administrador,@Descripcion,@Contenido)
commit transaction
end try
begin catch
select ERROR_NUMBER() as ErrorNumber;
return -1;
rollback transaction
end catch
end
Para mas información se puede consultar los siguientes enlaces :
http://technet.microsoft.com/es-es/library/ms179296(v=sql.105).aspx
http://technet.microsoft.com/es-es/library/ms181299.aspx
Cristian Araya
David Vargas
Horas Invertidas: 2 horas
No hay comentarios:
Publicar un comentario