Diferència entre revisions de la pàgina «ASIX/M10/UF1/A06/E3»
Salta a la navegació
Salta a la cerca
(Es crea la pàgina amb «==ASIX M10 UF1== ===Pt63. Control d'errors=== Guillem Solà i Boeck (host: PC05) ==Enunciat== ===Solució=== ====Procediment per afegir alumne==== <source lang="mysq...».) |
|||
| Línia 3: | Línia 3: | ||
Guillem Solà i Boeck (host: PC05) | Guillem Solà i Boeck (host: PC05) | ||
==Enunciat== | ==Enunciat== | ||
| + | ===Procedure Alumnes=== | ||
| + | <source lang="mysqle"> | ||
| + | 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 | ||
| + | </source> | ||
| + | |||
| + | ===Procedure Assignatures=== | ||
| + | <source lang="mysqle"> | ||
| + | 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 | ||
| + | </source> | ||
| + | |||
| + | ===Procedure Notes=== | ||
| + | <source lang="mysqle"> | ||
| + | CREATE | ||
| + | DEFINER=`root`@`localhost` | ||
| + | PROCEDURE | ||
| + | `Notes`(dni VARCHAR(10),assignatura VARCHAR(3),nota decimal(3,1)) | ||
| + | BEGIN | ||
| + | INSERT | ||
| + | INTO | ||
| + | Notes | ||
| + | VALUES | ||
| + | (nif(dni),assignatura,nota); | ||
| + | SELECT | ||
| + | CONCAT("L'alumne: ",nif(dni), " a l'assignatura: ",assignatura," té un ",nota," --- inserit"); | ||
| + | END | ||
| + | </source> | ||
===Solució=== | ===Solució=== | ||
| − | ==== | + | ====Procedure Alumnes==== |
<source lang="mysqle"> | <source lang="mysqle"> | ||
| − | + | 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 ''; -- Clau primària duplicada | ||
| + | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS ''; -- Taula inexistent | ||
| + | DECLARE EXIT HANDLER FOR 1305 SELECT "No s'han trobat les funcions necessàries per a l'execució" AS ''; -- No existeix la funció cridada | ||
| + | INSERT INTO alumnes VALUES (nif(dni),nom); | ||
| + | SELECT CONCAT(nom," amb nif ",nif(dni)," inserit"); | ||
| + | END | ||
</source> | </source> | ||
| − | ==== | + | ====Procedure assignatura==== |
<source lang="mysqle"> | <source lang="mysqle"> | ||
| − | + | 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 ''; -- Clau primària duplicada | ||
| + | DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS ''; -- Taula inexistent | ||
| + | INSERT INTO Assignatures VALUES (codi,descripcio); | ||
| + | SELECT | ||
| + | CONCAT("Assignatura: ",descripcio," amb codi: ",codi," inserida"); | ||
| + | END | ||
</source> | </source> | ||
| − | ==== | + | ====Procedure Notes==== |
<source lang="mysqle"> | <source lang="mysqle"> | ||
| − | + | 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 | ||
</source> | </source> | ||
==Execució== | ==Execució== | ||
| + | ===Executem el procediment sense tenir la funció '''nif''' creada=== | ||
<source lang="mysqle"> | <source lang="mysqle"> | ||
| + | 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) | ||
</source> | </source> | ||
Revisió del 16:05, 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
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 ''; -- Clau primària duplicada
DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS ''; -- Taula inexistent
DECLARE EXIT HANDLER FOR 1305 SELECT "No s'han trobat les funcions necessàries per a l'execució" AS ''; -- No existeix la funció cridada
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 ''; -- Clau primària duplicada
DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" AS ''; -- Taula inexistent
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)