1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
/* use dam1; tablas centros/departamentos/empleados (script primeros_pasos.sql) Ejercicio 21: Realiza un procedimiento a partir del procedimiento error8 del apartado 7.6 de los materiales. deberás completarlo incluyendo un manejador de error con condición de error con nombre definido por el usuario de la misma manera que se ha hecho con los otros dos manejadores de ese tipo (clave nula y clave repetida) para tratar el error de tabla inexistente. (1146) */ delimiter $$ drop procedure if exists 1x21 $$ create procedure 1x21( id int, nom varchar(30), out errorNum int, out errorText varchar(100)) modifies sql data begin -- DECLARACIONES: -- Se declaran tres 'constantes' cada una con el error a tratar: declare clave_repetida_error condition for 1062; declare clave_nula_error condition for 1048; declare tabla_inexistente_error condition for 1146; -- Se declara que hacer cuando suceda alguno de los siguientes errores: declare continue handler for clave_repetida_error begin set errorNum = 1062; set errorText = 'Clave duplicada'; end; declare continue handler for clave_nula_error begin set errorNum = 1048; set errorText = 'Clave nula'; end; declare continue handler for tabla_inexistente_error begin set errorNum = 1146; set errorText = 'Tabla inexistente'; end; declare continue handler for sqlexception begin set errorNum = -1; set errorText = 'Ocurrió un error'; end; -- INICIO OPERACIONES -- Se establece error a 0 'false', si al realizar la insercion sucede alguno de los errores controlados -- el valor de errorNum y errorText cambiaran por el que indique el error... set errorNum = 0; insert into alumnos values(id,nom); -- ... en caso contrario se le da valor a errorText como Operacion correcta. if errorNum = 0 then set errorText= 'Alta de alumno realizada'; end if; end $$ delimiter ; -- call 1x21(6,'Pedro', @errorId, @errorText); -- select @errorId as 'ID Error', @errorText as 'Descripcion'; |