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

De Lordwektabyte Wiki
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ó===
====Procediment per afegir alumne====
+
====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>
  
====Procediment per afegir assignatura====
+
====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>
  
====Procediment per afegir nota a un alumne per a una assignatura====
+
====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

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)

Contingut de notes.csv