Diferència entre revisions de la pàgina «ASIX/M10/UF1/A06/E3»

De Lordwektabyte Wiki
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 6 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 31: Línia 32:
  
  
===Solució===
+
==Solució==
====Procedure Alumnes====
+
===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 39: 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 47: Línia 48:
 
</source>
 
</source>
  
====Procedure assignatura====
+
===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 53: 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 62: Línia 63:
 
</source>
 
</source>
  
====Procedure Notes====
+
===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))
Línia 78: Línia 79:
  
 
==Execució==
 
==Execució==
===Executem el procediment sense tenir la funció '''nif''' creada===
+
===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 89: 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>
 +
 +
===Inserir un alumne amb un DNI ja existent a la BBDD===
 +
<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

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)