· 6 years ago · Jun 10, 2019, 11:00 AM
111. Muéstrese el nombre, apellidos y altura de los jugadores que superan una determinada altura, ordenados descendentemente por altura. (No se puede utilizar GROUP BY) (liga)
2show create table jugador;
3
4CREATE PROCEDURE minimaAltura (minimo DECIMAL(4,2))
5 READS SQL DATA
6BEGIN
7DECLARE nom VARCHAR(45);
8DECLARE ape VARCHAR(45);
9DECLARE alt DECIMAL(4,2);
10DECLARE fin BOOL DEFAULT 0;
11DECLARE jug CURSOR FOR SELECT nombre, apellido, altura FROM jugador WHERE altura IS NOT NULL AND altura > minimo;
12DECLARE CONTINUE HANDLER FOR NOT FOUND SET fin = 1;
13DROP TABLE IF EXISTS datos;
14CREATE TABLE datos
15(
16 codigo INT AUTO_INCREMENT PRIMARY KEY,
17 nombre VARCHAR(45) NULL,
18 apellidos VARCHAR(45) NULL,
19 altura DECIMAL(4,2) NULL
20);
21OPEN jug;
22a: LOOP
23 SET fin = 0;
24 FETCH jug INTO nom, ape, alt;
25 IF fin = 1 THEN LEAVE a; END IF;
26 INSERT INTO datos VALUES(NULL,nom,ape,alt);
27END LOOP a;
28CLOSE jug;
29SELECT nombre NOMBRE, apellidos APELLIDOS, altura ALTURA FROM datos ORDER BY 3 DESC;
30DROP TABLE datos;
31END; $$
32
33call minimaAltura(1.99)