sql server aplicado (ssa010)

12
SQL SERVER APLICADO (SSA010) Ariel Alexis Fierro Sáez [email protected] DuocUC

Upload: wendy-rivers

Post on 15-Mar-2016

42 views

Category:

Documents


0 download

DESCRIPTION

DuocUC. SQL SERVER APLICADO (SSA010). Ariel Alexis Fierro Sáez [email protected]. Manejo de errores. Al igual que los lenguaje de programación transactSQL también provee los mecanismos necesarios para el control de errores. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: SQL SERVER APLICADO (SSA010)

SQL SERVER APLICADO (SSA010)

Ariel Alexis Fierro Sá[email protected]

DuocUC

Page 2: SQL SERVER APLICADO (SSA010)

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 TRYsql_statement…..

END TRYBEGIN CATCH

sql_statement …..

END CATCH

Page 3: SQL SERVER APLICADO (SSA010)

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

Page 4: SQL SERVER APLICADO (SSA010)

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<sql_statement1>….

END TRYBEGIN CATCH

<sql_statement2>…..BEGIN TRY

<sql_statement3>…..

END TRYBEGIN CATCH

<sql_statement4>…..

END CATCHEND CATCH

Page 5: SQL SERVER APLICADO (SSA010)

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<sql_statement1>….

END TRYBEGIN 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

<sql_statement3>…..

END TRYBEGIN CATCH

PRINT ERROR_MESASAGE() //referencia al error producido en TRY interno

…..END CATCH

END CATCH

Page 6: SQL SERVER APLICADO (SSA010)

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 (<mensaje_error>,

<severidad_error>,<estado_error>)

• 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.

Page 7: SQL SERVER APLICADO (SSA010)

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

Page 8: SQL SERVER APLICADO (SSA010)

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.

Page 9: SQL SERVER APLICADO (SSA010)

Procedimiento almacenado• Creación de procedimiento almacenado, sin parámetro salida.

CREATE PROCEDURE <nombre_procedimiento> [@param1 <tipo>, ………]ASBEGINsql_statement…….END

• Creación de procedimiento almacenado, con parámetro salida.

CREATE PROCEDURE <nombre_procedimiento> [@param1 <tipo>, ….., @variable <tipo> OUTPUT]ASBEGINsql_statement…….END

Page 10: SQL SERVER APLICADO (SSA010)

Procedimiento almacenado• Modificación de un procedimiento almacenado

ALTER PROCEDURE <nombre_procedimiento> [@param1 <tipo>, ………]ASBEGINsql_statement…….END

• Eliminación de un procedimiento almacenado

DROP PROCEDURE <nombre_procedimiento>

• Ejecución de un procedimiento almacenado

EXEC <nombre_procedimiento> [<param1>, <param2>,…….. , [@variable <tipo> OUTPUT] ]

Page 11: SQL SERVER APLICADO (SSA010)

Ejercicios • Crear un procedimiento almacenado que permita calcular el

porcentaje de producto productos cargados a un 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.