Diferència entre revisions de la pàgina «ASIX/M10/UF1/A06/E3»
Salta a la navegació
Salta a la cerca
m (Guillem ha mogut M10/UF1/A06/E3 a ASIX/M10/UF1/A06/E3 sense deixar una redirecció: Crear subnivell ASIX) |
|||
| (Hi ha 7 revisions intermèdies del mateix usuari que no es mostren) | |||
| Línia 1: | Línia 1: | ||
| + | [[Category:M10]] | ||
==ASIX M10 UF1== | ==ASIX M10 UF1== | ||
===Pt63. Control d'errors=== | ===Pt63. Control d'errors=== | ||
| Línia 25: | Línia 26: | ||
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 | ||
| − | |||
| − | |||
| − | |||
| − | |||
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 35: | Línia 32: | ||
| − | + | ==Solució== | |
| − | + | ===Procedure Alumnes=== | |
<source lang="mysqle"> | <source lang="mysqle"> | ||
CREATE DEFINER=`root`@`localhost` PROCEDURE `Alumnes`(dni VARCHAR(10),nom VARCHAR(45)) | CREATE DEFINER=`root`@`localhost` PROCEDURE `Alumnes`(dni VARCHAR(10),nom VARCHAR(45)) | ||
| Línia 43: | Línia 40: | ||
DECLARE EXIT HANDLER FOR 1146 SELECT "La taula no existeix" 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 1305 SELECT "No s'han trobat les funcions necessàries per a l'execució" AS 'ERROR'; | ||
| − | DECLARE EXIT HANDLER FOR SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps dni (VARCHAR) i nom (VARCHAR)"; | + | DECLARE EXIT HANDLER FOR SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps dni (VARCHAR) i nom (VARCHAR)" AS 'ERROR'; |
DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | ||
| Línia 51: | Línia 48: | ||
</source> | </source> | ||
| − | + | ===Procedure assignatura=== | |
<source lang="mysqle"> | <source lang="mysqle"> | ||
CREATE DEFINER=`root`@`localhost` PROCEDURE `Assignatures`(codi VARCHAR(3),descripcio VARCHAR(45)) | CREATE DEFINER=`root`@`localhost` PROCEDURE `Assignatures`(codi VARCHAR(3),descripcio VARCHAR(45)) | ||
| Línia 57: | Línia 54: | ||
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 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 1146 SELECT "La taula no existeix" AS 'ERROR'; | ||
| − | DECLARE EXIT HANDLER FOR SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps codi (VARCHAR) i descripcio (VARCHAR)"; | + | DECLARE EXIT HANDLER FOR SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps codi (VARCHAR) i descripcio (VARCHAR)" AS 'ERROR'; |
DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT "Error desconegut. No s'ha pogut registre l'alumne" AS 'ERROR'; | ||
| Línia 66: | Línia 63: | ||
</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)) | CREATE DEFINER=`root`@`localhost` PROCEDURE `Notes`(dni VARCHAR(10),assignatura VARCHAR(3),nota decimal(3,1)) | ||
BEGIN | BEGIN | ||
| − | DECLARE EXIT HANDLER FOR | + | 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 SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps dni (VARCHAR), assignatura (VARCHAR) i nota (DECIMAL)" 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); | ||
| Línia 79: | Línia 79: | ||
==Execució== | ==Execució== | ||
| − | ===Executem el procediment sense tenir la funció | + | ===Executem el procediment sense tenir la funció nif creada=== |
<source lang="mysqle"> | <source lang="mysqle"> | ||
MariaDB [NotesInstitut]> call Alumnes(47852734,"Guillem Solà"); | MariaDB [NotesInstitut]> call Alumnes(47852734,"Guillem Solà"); | ||
+-------------------------------------------------------------+ | +-------------------------------------------------------------+ | ||
| − | | | + | |ERROR | |
+-------------------------------------------------------------+ | +-------------------------------------------------------------+ | ||
| No s'han trobat les funcions necessàries per a l'execució | | | No s'han trobat les funcions necessàries per a l'execució | | ||
| Línia 90: | Línia 90: | ||
Query OK, 0 rows affected (0.00 sec) | Query OK, 0 rows affected (0.00 sec) | ||
| + | </source> | ||
| + | ===Executem el procediment sense tenir la taula creada=== | ||
| + | <source lang="mysqle"> | ||
| + | MariaDB [NotesInstitut]> call Alumnes("Marc",47852734); | ||
| + | +----------------------+ | ||
| + | | | | ||
| + | +----------------------+ | ||
| + | | La taula no existeix | | ||
| + | +----------------------+ | ||
| + | 1 row in set (0.00 sec) | ||
</source> | </source> | ||
| − | === | + | ===Inserir un alumne amb un DNI ja existent a la BBDD=== |
| − | <source> | + | <source lang="mysqle"> |
| − | + | MariaDB [NotesInstitut]> call Alumnes("Marc",47852734); | |
| + | +--------------------------------------------------+ | ||
| + | | | | ||
| + | +--------------------------------------------------+ | ||
| + | | L'alumne Marc ja ha estat donat d'alta a la BBDD | | ||
| + | +--------------------------------------------------+ | ||
| + | 1 row in set (0.00 sec) | ||
</source> | </source> | ||
Revisió de 11:29, 15 abr 2020
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 '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 SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps dni (VARCHAR) i nom (VARCHAR)" 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 SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps codi (VARCHAR) i descripcio (VARCHAR)" 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 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 SQLSTATE '22007' SELECT "Has introduït dades invàlides pels camps dni (VARCHAR), assignatura (VARCHAR) i nota (DECIMAL)" 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
Execució
Executem el procediment sense tenir la funció nif creada
MariaDB [NotesInstitut]> call Alumnes(47852734,"Guillem Solà"); +-------------------------------------------------------------+ |ERROR | +-------------------------------------------------------------+ | 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)
Executem el procediment sense tenir la taula creada
MariaDB [NotesInstitut]> call Alumnes("Marc",47852734);
+----------------------+
| |
+----------------------+
| La taula no existeix |
+----------------------+
1 row in set (0.00 sec)
Inserir un alumne amb un DNI ja existent a la BBDD
MariaDB [NotesInstitut]> call Alumnes("Marc",47852734);
+--------------------------------------------------+
| |
+--------------------------------------------------+
| L'alumne Marc ja ha estat donat d'alta a la BBDD |
+--------------------------------------------------+
1 row in set (0.00 sec)