Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/12/2014, 07:43
MrHanzo
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 10 años
Puntos: 0
Respuesta: Procedimientos almacenados y cursores en MySQL

Esto es lo que eh podido sacar, la gran mayoría si no todos estarán mal


PROCEDIMIENTOS ALMACENADOS Y CURSORES EN MYSQL
1. Crea un procedimiento que muestra el año actual.
Código MySQL:
Ver original
  1. DELIMITER $$
  2. END$$


2. Crea un procedimiento que dada una cadena, devuelva la misma cadena
con las tres primeras letras en mayúsculas.

Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE ej2(IN cadena VARCHAR(8000))
  3. DECLARE primeraletras CHAR(3);
  4.  
  5. SET primeraletras = UPPER(LEFT(IN cadena, 3));
  6. SELECT CONCAT(primeraletras, RIGHT(LOWER(IN cadena), LENGTH(IN cadena) - 3)) AS Cadena;
  7. END$$



3. Crea un procedimiento que calcule el total de tantos en un partido tomando
como entrada el resultado el formato de dos números de hasta tres cifras
separados por guión (‘xxx-xxx’)

Código MySQL:
Ver original
  1. DELIMITER $$
  2. DECLARE score1 INT(3);
  3. DECLARE score2 INT(3);
  4. DECLARE result VARCHAR(7);
  5. SET result = score1 + "-" + score2
  6. SELECT result
  7. END$$



4. Crea una función que dados dos números devuelva un 1 si son divisibles y
un 0 si no lo son.
Código MySQL:
Ver original
  1. DELIMITER $$
  2. RETURN INT
  3. DECLARE result INT;
  4.             IF MOD(x,y)=TRUE THEN SET result="1";
  5.             ELSE SET result="0";
  6.             END IF;
  7. RETURN (result);
  8. END$$



5. Usa estructuras condicionales para mostrar el día de la semana a partir de
un número pasado como parámetro, de la forma 1=Lunes, 2=Martes, etc

Código MySQL:
Ver original
  1. DELIMITER $$
  2. RETURN INT
  3.             IF dia="1" THEN SET dia="Lunes";
  4.             ELSE IF dia="2" THEN SET dia="Martes";
  5.                 ELSEIF dia="3" THEN SET dia="Miercoles";
  6.                     ELSEIF dia="4" THEN SET dia="Jueves";
  7.                         ELSEIF dia="5" THEN SET dia="Viernes";
  8.                             ELSEIF dia="6" THEN SET dia="Sabado";
  9.                                 ELSE dia="7" THEN SET dia="Domingo";
  10.             END IF;
  11. RETURN (dia);
  12. END$$


6. Igualmente usa estructuras condicionales para que, dada una fecha en
formato de mysql (YYYY-MM-DD), dé como salida un texto descriptivo. Por
ejemplo, ‘2010-02-01’ daría como salida “Lunes, 02 de febrero de 2010”.


Código MySQL:
Ver original
  1. DELIMITER $$
  2. RETURN DATETIME
  3. RETURN DATE_FORMAT(dia, '%W %M %Y');
  4. END$$



7. Crea una función de devuelva el mayor de tres números pasados como
parámetro.
Código MySQL:
Ver original
  1. DELIMITER $$
  2. RETURN INT
  3. DECLARE result INT;
  4.             IF x>y AND x>z THEN SET result=x;
  5.             ELSEIF x<y AND z<y THEN SET result=y;
  6.             ELSEIF x<z AND y<z THEN SET result=z;
  7.             ELSE echo "error"
  8.             END IF;
  9. RETURN (result);
  10. END$$



8. Crea una función que muestre la suma de los ‘n’ primeros números, donde
‘n’ se pasa como parámetro.

Código MySQL:
Ver original
  1. DELIMITER $$
  2. RETURN INT
  3. DECLARE result VARCHAR (100);
  4. SET x = 1;
  5. SET result = n;
  6. loop1: WHILE x<n DO
  7.     SET resul = CONCAT(resul,CONCAT(', ',n+i));
  8.     SET x = x + 1;
  9. END WHILE loop1;
  10. RETURN (result);
  11. END$$


9. Crea una función que dado un número como parámetro, devuelva 1 si es
primo y 0 si no lo es.
Código MySQL:
Ver original
  1. DELIMITER $$
  2.     DECLARE num INT;
  3.     DECLARE x INT;
  4.     DECLARE primo INT;
  5.     SET x = 2;
  6.    
  7.     IF n < 2 THEN
  8.         RETURN(0);
  9.     ELSEIF n = 2 THEN
  10.         RETURN(1);
  11.     ELSE
  12.         SET primo = 1;
  13.         loop1: WHILE x <= SQRT(n) DO
  14.             IF (n%x) = 0 THEN
  15.                 SET primo = 0;
  16.                 LEAVE loop1;
  17.             END IF;
  18.             SET x = x +1;
  19.         END WHILE loop1;
  20.    
  21.         RETURN (primo);
  22.     END IF;
  23. END$$


10.En la base de datos ‘liga’, crea un procedimiento que rellene los campos
‘pg’ y ‘pp’ de la tabla ‘equipo’ en base a los resultados. Para ello crea antes
un procedimiento que devuelva un ‘1’,’X’ o ‘2’, con un resultado que se pase
como parámetro, según sea victoria, empate o derrota.

Código MySQL:
Ver original
  1. DELIMITER $$
  2. USE liga
  3. IN pg INT
  4. IN pp INT);
  5. DECLARE result VARCHAR(8);
  6. IF result = "victoria" THEN SET result = "1";
  7. ELSEIF result = "empate" THEN SET result = "X";
  8. ELSE SET result = "2";
  9. INSERT INTO equipo (pg,pp)
  10. VALUES ( result, result)
  11. END$$




11.Crea una tabla llamada “primos” en la base de datos de test, con un único
campo numérico entero. Seguidamente, crea un procedimiento que dado un
parámetro entero “m” rellene la tabla con aquellos números enteros que son
primos entre 1 y “m”. Si la tabla no está vacía, el procedimiento deberá
vaciarla previamente.


Código MySQL:
Ver original
  1. DELIMITER $$
  2. USE test
  3. TRUNCATE primos
  4. INSERT INTO primos(campo) VALUES(m, MOD(m,1));
  5. END$$





13.Crea un procedimiento que devuelva el nombre del autor que más libros ha
publicado en el último mes.

Código MySQL:
Ver original
  1. DELIMITER $$
  2. USE Libros
  3. SELECT autor FROM publicaciones ORDER BY autor desc LIMIT 1
  4. END$$

14.Crea un procedimiento que devuelva los datos del cliente, de la cuenta, y el
saldo de los clientes con saldo negativo en alguna de sus cuentas.
Código MySQL:
Ver original
  1. DELIMITER $$
  2. USE Cuentas
  3. SELECT dni, nombre, id_cuenta, saldo FROM clientes, cuentas ORDER BY desc WHERE saldo<0
  4. END$$

15.Crea un procedimiento que devuelva el equipo o equipos que mayor racha
de partidos ganados consecutivos en casa ha tenido.

Código MySQL:
Ver original
  1. DELIMITER $$
  2. USE Liga
  3. SELECT nombre FROM equipos ORDER BY nombre desc WHERE victorias_casa=>1
  4. END$$

Última edición por MrHanzo; 09/12/2014 a las 14:03