Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Procedimientos almacenados y cursores en MySQL

Estas en el tema de Procedimientos almacenados y cursores en MySQL en el foro de Mysql en Foros del Web. Buenos días, soy un estudiante de informática y verán me han encomendado la tarea de realizar estos ejercicios sobre procedimientos y cursores para bases de ...
  #1 (permalink)  
Antiguo 27/11/2014, 11:48
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 4 meses
Puntos: 0
Pregunta Procedimientos almacenados y cursores en MySQL

Buenos días, soy un estudiante de informática y verán me han encomendado la tarea de realizar estos ejercicios sobre procedimientos y cursores para bases de datos pero debido a que este tipo de actividad, "programacion", no se encuentra en mi área de estudio habitual y a que no se nos a dado casi material ni ayuda para estudiar este tema y con la gran variedad de opciones que tiene esta materia eh llegado a un punto en el que no puedo continuar, al parecer estos ejercicios no deberían suponer ningún tipo de problema para un usuario con conocimientos sobre esta materia,
entonces les agradecería mucho si pudieran resolver estos problemas para que yo pueda tomarlos como ejemplo y poder entender mejor el tema de los procedimientos y funciones de mysql
Muchas gracias de antemano a la gente en este sitio web y espero poder contribuir al foro en el futuro
-ATTE Carlos-

PROCEDIMIENTOS ALMACENADOS Y CURSORES EN MYSQL
1. Crea un procedimiento que muestra el año actual.

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

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’)

4. Crea una función que dados dos números devuelva un 1 si son divisibles y
un 0 si no lo son.

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

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”.

7. Crea una función de devuelva el mayor de tres números pasados como
parámetro.

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

9. Crea una función que dado un número como parámetro, devuelva 1 si es
primo y 0 si no lo es.

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.

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.

12.Crea un procedimiento que genere e inserte “n” movimientos aleatorios en
la tabla de movimientos de la base de datos de “ebanca”, donde “n” es un
parámetro que le pasa. Los datos de los movimientos serán de clientes y
cuentas existentes al azar (o siguiendo algún patrón) y las cantidades
oscilarán entre 1 y 10000.

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

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.

15.Crea un procedimiento que devuelva el equipo o equipos que mayor racha
de partidos ganados consecutivos en casa ha tenido.
  #2 (permalink)  
Antiguo 27/11/2014, 12:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Procedimientos almacenados y cursores en MySQL

Cita:
entonces les agradecería mucho si pudieran resolver estos problemas para que yo pueda tomarlos como ejemplo y poder entender mejor el tema de los procedimientos y funciones de mysql

OK...
Bueno, empieza a codificar y lo que no vayas entendiendo lo preguntas, posteando el código que llevas escrito. Te Ayudaremos en función de lo que nos muestres...

Pero no vamos a escribir la solución por tí, ni darte código porque sí. No le hacemos los trabajos prácticos a nadie...

Si nosotros pudimos hacerlos por nuestra cuenta, tú también puedes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/12/2014, 07:43
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 4 meses
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

Etiquetas: cursores, procedimientos, sgbd
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:19.