Diferència entre revisions de la pàgina «ASIX/M10/UF1/A06/E3»
Salta a la navegació
Salta a la cerca
Línia 25: | Línia 25: | ||
CREATE DEFINER=`root`@`localhost` PROCEDURE `Notes`(dni VARCHAR(10),assignatura VARCHAR(3),nota decimal(3,1)) | CREATE DEFINER=`root`@`localhost` PROCEDURE `Notes`(dni VARCHAR(10),assignatura VARCHAR(3),nota decimal(3,1)) | ||
BEGIN | BEGIN | ||
+ | DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'alumne ja ha estat avaluat a l'assignatura ", assignatura) as 'ERROR'; | ||
+ | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS 'ERROR'; | ||
+ | DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | ||
INSERT INTO Notes VALUES (nif(dni),assignatura,nota); | INSERT INTO Notes VALUES (nif(dni),assignatura,nota); | ||
SELECT CONCAT("L'alumne: ",nif(dni), " a l'assignatura: ",assignatura," té un ",nota," --- inserit"); | SELECT CONCAT("L'alumne: ",nif(dni), " a l'assignatura: ",assignatura," té un ",nota," --- inserit"); | ||
Línia 36: | Línia 39: | ||
CREATE DEFINER=`root`@`localhost` PROCEDURE `Alumnes`(dni VARCHAR(10),nom VARCHAR(45)) | CREATE DEFINER=`root`@`localhost` PROCEDURE `Alumnes`(dni VARCHAR(10),nom VARCHAR(45)) | ||
BEGIN | BEGIN | ||
− | DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'alumne ",nom," ja ha estat donat d'alta a la BBDD") as ''; | + | DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'alumne ",nom," ja ha estat donat d'alta a la BBDD") as 'ERROR'; |
− | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS ''; | + | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS 'ERROR'; |
− | DECLARE EXIT HANDLER FOR 1305 SELECT "No s'han trobat les funcions necessàries per a l'execució" AS ''; | + | DECLARE EXIT HANDLER FOR 1305 SELECT "No s'han trobat les funcions necessàries per a l'execució" AS 'ERROR'; |
+ | DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | ||
INSERT INTO alumnes VALUES (nif(dni),nom); | INSERT INTO alumnes VALUES (nif(dni),nom); | ||
SELECT CONCAT(nom," amb nif ",nif(dni)," inserit"); | SELECT CONCAT(nom," amb nif ",nif(dni)," inserit"); | ||
Línia 48: | Línia 52: | ||
CREATE DEFINER=`root`@`localhost` PROCEDURE `Assignatures`(codi VARCHAR(3),descripcio VARCHAR(45)) | CREATE DEFINER=`root`@`localhost` PROCEDURE `Assignatures`(codi VARCHAR(3),descripcio VARCHAR(45)) | ||
BEGIN | BEGIN | ||
− | DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'assignatura ",codi, " - ",descripcio," ja ha estat donat d'alta a la BBDD") as ''; | + | DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'assignatura ",codi, " - ",descripcio," ja ha estat donat d'alta a la BBDD") as 'ERROR'; |
− | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS ''; | + | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS 'ERROR'; |
+ | DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | ||
INSERT INTO Assignatures VALUES (codi,descripcio); | INSERT INTO Assignatures VALUES (codi,descripcio); | ||
SELECT | SELECT |
Revisió del 16:13, 16 feb 2018
Contingut
ASIX M10 UF1
Pt63. Control d'errors
Guillem Solà i Boeck (host: PC05)
Enunciat
Procedure Alumnes
CREATE DEFINER=`root`@`localhost` PROCEDURE `Alumnes`(dni VARCHAR(10),nom VARCHAR(45)) BEGIN INSERT INTO Alumnes VALUES (nif(dni),nom); SELECT CONCAT(nom," amb nif ",nif(dni)," inserit"); END
Procedure Assignatures
CREATE DEFINER=`root`@`localhost` PROCEDURE `Assignatures`(codi VARCHAR(3),descripcio VARCHAR(45)) BEGIN INSERT INTO Assignatures VALUES (codi,descripcio); SELECT CONCAT("Assignatura: ",descripcio," amb codi: ",codi," inserida"); END
Procedure Notes
CREATE DEFINER=`root`@`localhost` PROCEDURE `Notes`(dni VARCHAR(10),assignatura VARCHAR(3),nota decimal(3,1)) BEGIN DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'alumne ja ha estat avaluat a l'assignatura ", assignatura) as 'ERROR'; DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS 'ERROR'; DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; INSERT INTO Notes VALUES (nif(dni),assignatura,nota); SELECT CONCAT("L'alumne: ",nif(dni), " a l'assignatura: ",assignatura," té un ",nota," --- inserit"); END
Solució
Procedure Alumnes
CREATE DEFINER=`root`@`localhost` PROCEDURE `Alumnes`(dni VARCHAR(10),nom VARCHAR(45)) BEGIN DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'alumne ",nom," ja ha estat donat d'alta a la BBDD") as 'ERROR'; DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS 'ERROR'; DECLARE EXIT HANDLER FOR 1305 SELECT "No s'han trobat les funcions necessàries per a l'execució" AS 'ERROR'; DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; INSERT INTO alumnes VALUES (nif(dni),nom); SELECT CONCAT(nom," amb nif ",nif(dni)," inserit"); END
Procedure assignatura
CREATE DEFINER=`root`@`localhost` PROCEDURE `Assignatures`(codi VARCHAR(3),descripcio VARCHAR(45)) BEGIN DECLARE EXIT HANDLER FOR 1062 SELECT CONCAT("L'assignatura ",codi, " - ",descripcio," ja ha estat donat d'alta a la BBDD") as 'ERROR'; DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS 'ERROR'; DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; INSERT INTO Assignatures VALUES (codi,descripcio); SELECT CONCAT("Assignatura: ",descripcio," amb codi: ",codi," inserida"); END
Procedure Notes
CREATE DEFINER=`root`@`localhost` PROCEDURE `Notes`(dni VARCHAR(10),assignatura VARCHAR(3),nota decimal(3,1)) BEGIN DECLARE EXIT HANDLER FOR 1452 SELECT CONCAT("L'alumne que has triat no existeix a la BBDD") as ''; -- Foreign Key inexistent INSERT INTO Notes VALUES (nif(dni),assignatura,nota); SELECT CONCAT("L'alumne: ",nif(dni), " a l'assignatura: ",assignatura," té un ",nota," --- inserit"); END
Execució
Executem el procediment sense tenir la funció nif creada
MariaDB [NotesInstitut]> call Alumnes(47852734,"Guillem Solà"); +-------------------------------------------------------------+ | | +-------------------------------------------------------------+ | No s'han trobat les funcions necessàries per a l'execució | +-------------------------------------------------------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)