La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC.

Presentaciones similares


Presentación del tema: "SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC."— Transcripción de la presentación:

1 SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez afierrosaez@gmail.com DuocUC

2 Manejo de errores Al igual que los lenguaje de programación transactSQL también provee los mecanismos necesarios para el control de errores. TRY….CATCH permite un grupo de instrucciones transactSQL en el bloque TRY. Si de produce un error en este bloque, el control se transfiere a otro grupo de instrucciones que esta incluido en un bloque CATCH BEGIN TRY sql_statement ….. END TRY BEGIN CATCH sql_statement ….. END CATCH

3 Manejo de errores En el ámbito de un bloque CATCH, se pueden utilizar las siguientes funciones del sistema para obtener información acerca del error que provocó la ejecución del bloque CATCH: ▫ERROR_NUMBER() devuelve el número del error. ▫ERROR_SEVERITY() devuelve la gravedad. ▫ERROR_STATE() devuelve el número de estado del error. ▫ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador donde se produjo el error. ▫ERROR_LINE() devuelve el número de línea de la rutina que provocó el error. ▫ERROR_MESSAGE() devuelve el texto completo del mensaje de error. Este texto incluye los valores suministrados para los parámetros remplazables, como longitudes, nombres de objetos u horas. NOTA: Estas funciones devuelven NULL si se las llama desde fuera del ámbito del bloque CATCH

4 Manejo de errores Un bloque CATCH puede contener una construcción TRY…CATCH incrustada para controlar los errores detectados por el código de CATCH. BEGIN TRY …. END TRY BEGIN CATCH ….. BEGIN TRY ….. END TRY BEGIN CATCH ….. END CATCH

5 Manejo de errores En los bloques CATCH anidados, cualquier TIPO DE ERROR devuelve el error específico para el ámbito del bloque CATCH donde se hace referencia a él. BEGIN TRY //try…catch externo …. END TRY BEGIN CATCH PRINT ERROR_MESSAGE() // referencia al error producido en TRY externo ….. BEGIN TRY // try…catch interno PRINT ERROR_MESSAGE() // referencia al error producido en TRY externo ….. END TRY BEGIN CATCH PRINT ERROR_MESASAGE() //referencia al error producido en TRY interno ….. END CATCH

6 Manejo de errores Muchas veces es necesario provocar voluntariamente un error, por ejemplo nos puede interesas que se genere un error cuando los datos incumplen una regla de negocio. RAISERROR genera un error voluntario e inicia el procesamiento de errores de la sesión. ▫RAISERROR (,, ) Condiciones ▫Dentro de un bloque TRY ▫Severidad del error entre 0 y 18. Los error de 19 a 25 se consideran errores fatales de sistema, solo los usuarios del grupo sysadmin pueden asignar dichos valores ▫Error con estados entre 1 a 127.

7 Manejo de errores Ejemplo RAISERROR: DECLARE @nombre varchar(20), @edad int SET @nombre = ‘Jose’ SET @edad= 10 IF (@edad>0 AND @edad< 18) BEGIN RAISERROR (‘Solo pueden ingresar mayor a 18 años’', 16, -- Severidad 1 -- Estado ) END

8 Procedimiento almacenado Un procedimiento almacenado (stored procedure) es un programa que se encuentra almacenado físicamente en la base de datos para ser utilizado en cualquier momento. Algunas de sus características son: ▫Aceptan parámetro de entrada ▫Pueden devolver un valor o un conjunto de valores ▫Contienen instrucciones que realizan operaciones sobre la base de datos ▫Son ejecutadas del lado del servidor de base de datos.

9 Procedimiento almacenado Creación de procedimiento almacenado, sin parámetro salida. CREATE PROCEDURE [@param1, ………] AS BEGIN sql_statement ……. END Creación de procedimiento almacenado, con parámetro salida. CREATE PROCEDURE [@param1, ….., @variable OUTPUT] AS BEGIN sql_statement ……. END

10 Procedimiento almacenado Modificación de un procedimiento almacenado ALTER PROCEDURE [@param1, ………] AS BEGIN sql_statement ……. END Eliminación de un procedimiento almacenado DROP PROCEDURE Ejecución de un procedimiento almacenado EXEC [,,…….., [@variable OUTPUT] ]

11 Ejercicios Crear un procedimiento almacenado que permita calcular el porcentaje de producto cargados un determinado equipo, es decir, de t0dos los cartones que son de responsabilidad de carga de un equipo, cuanto de ellos se encuentran cargados en algún camión. Considere que estado 40 corresponde que un cartón se encuentra ya cargado en el camión. Defina un script que liste todos los equipos indicando el porcentaje de carga de los cartones asignados, en caso de no tener carga de trabajo el equipo indicarlo. Usando la base de datos Agenda. Crear un procedimiento almacenado que permita realizar un despido de una persona, además el programa deberá entregar como resultado la cantidad de dinero que se le pagara por los años de servicios. Considere que el calculo de la indemnización será la suma de la gratificación y el sueldo base de todos los contratos que pueda tener el empleado, además se deberá considerar la fecha de contrato mas antigua para determinar los años de antigüedad.

12 Referencias TRY...CATCH (Transact-SQL) http://msdn.microsoft.com/es- es/library/ms175976.aspx Procedimientos almacenados (motor de base de datos) http://msdn.microsoft.com/es- es/library/ms190782.aspx


Descargar ppt "SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez DuocUC."

Presentaciones similares


Anuncios Google