Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT @numero:= 0 -- Crea variable entera
- SELECT FUNCTION() -- Llama función
- CALL PROCEDURE() -- Llama procedimiento
- -- Procedimiento para obtener la fecha actual y un número aleatorio
- DELIMITER $$
- CREATE FUNCTION date_random()
- RETURNS TEXT
- BEGIN
- RETURN CONCAT('Fecha: ', NOW()," Número: ", RAND());
- END
- $$
- DELIMITER ;
- -- Sobre la base de datos test, crea un procedimiento que muestre el año actual.
- DELIMITER $$
- CREATE DEFINER=`root`@`localhost` FUNCTION `mostrarAnno`() RETURNS int(11)
- BEGIN
- RETURN EXTRACT(YEAR FROM now());
- END
- -- Usa un procedimiento que sume 1 a una variable cada vez que se ejecute.
- DELIMITER $$
- CREATE DEFINER=`root`@`localhost` PROCEDURE `masUno`(INOUT numero INT)
- BEGIN
- SET numero=numero+1;
- SELECT @numero;
- END
- -- Crea un procedimiento que muestre las 3 primera letras de una cadena pasada como parámetro en mayúsculas.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `cadena3M`(texto TEXT)
- BEGIN
- SELECT UPPER(LEFT(texto, 3));
- END
- -- Crea un procedimiento que muestre 2 cadenas pasadas como parámetro concatenadas y en mayúsculas.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `CONCAT`(texto1 TEXT, texto2 TEXT)
- BEGIN
- SELECT UPPER(CONCAT(texto1, texto2));
- END
- -- Crea una función que devuelva el valor de la hipotenusa de un triángulo a partir de los valores de sus lados.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `hipotenusa`(lado1 INTEGER, lado2 INTEGER) RETURNS int(11)
- BEGIN
- DECLARE n INTEGER;
- SET n:= pow(lado1, 2)+pow(lado2, 2);
- RETURN SQRT(n);
- END
- -- Crea una función que calcule el total de puntos en un partido tomando como entrada el resultado en formato xxx-xxx.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `sumaPuntos`(puntos text) RETURNS int(11)
- BEGIN
- DECLARE n INTEGER;
- SET n:=substring(puntos, 1, 3);
- SET n:=n+substring(puntos, 5, 7);
- RETURN n;
- END
- -- Crea un procedimiento que tiene como entrada un parámetro INT al cual se le suma 1 si el valor después de sumar 1, es 0 insertaremos --- en la tabla T el valor 10, si el parámetro es 0 actualizar tabla T sumando 1 al parámetro de entrada si no actualizar tabla T
- -- sumando 2 al parámetro de entrada.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `insertaNumeros`(n int)
- BEGIN
- CREATE TABLE IF NOT EXISTS test.T (numero int);
- SET n=n+1;
- IF n=0 THEN
- INSERT INTO test.T VALUES(10);
- ELSEIF n=1 THEN
- INSERT INTO test.T VALUES(n+1);
- ELSE
- INSERT INTO test.T VALUES(n+2);
- END IF;
- END
- -- Crear un procedimiento con un parámetro de entrada tipo INT, declarar una variable que tendrá el valor del parámetro +1 .
- -- Cuando el valor de la variable sea 0, insertaremos en la tabla T el valor 30, cuando sea 1 el valor 40, en cualquier otro caso el ------ valor 100.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `insertaNumeros2`(n int)
- BEGIN
- SELECT @num=n+1;
- CREATE TABLE IF NOT EXISTS test.T (numero int);
- SET n=n+1;
- IF n=0 THEN
- INSERT INTO test.T VALUES(30);
- ELSEIF n=1 THEN
- INSERT INTO test.T VALUES(40);
- ELSE
- INSERT INTO test.T VALUES(100);
- END IF;
- END
- -- Crea una función que devuelva 0 o 1 si un número es divisible o no por otro.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `divisible`(num1 int, num2 int) RETURNS int(11)
- BEGIN
- IF MOD(num1, num2)=0 THEN
- RETURN 1;
- ELSE
- RETURN 0;
- END IF;
- END
- -- Usando estructura condicionales muestra el día de la semana según un valor numérico de entrada.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `diaSemana`(n int) RETURNS text CHARSET latin1
- BEGIN
- IF n=1 THEN
- RETURN 'Lunes';
- ELSEIF n=2 THEN
- RETURN 'Martes';
- ELSEIF n=3 THEN
- RETURN 'Miércoles';
- ELSEIF n=4 THEN
- RETURN 'Jueves';
- ELSEIF n=5 THEN
- RETURN 'Viernes';
- ELSEIF n=6 THEN
- RETURN 'Sábado';
- ELSEIF n=7 THEN
- RETURN 'Domingo';
- ELSE
- RETURN 'No existe ese número de día';
- END IF;
- END
- -- Crea una función que devuelva el mayor de tres números pasados por parámetros.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `mayor`(n int, n1 int, n2 int) RETURNS int(11)
- BEGIN
- IF n>n1 THEN
- IF n>n2 THEN
- RETURN n;
- ELSE
- RETURN n2;
- END IF;
- ELSEIF n1>n2 THEN
- RETURN n1;
- ELSE
- RETURN n2;
- END IF;
- END
- -- Crea una función que devuelva 1 si ganó el visitante o 0 en caso contrario. parámetro (L)xxx-xxx(V)
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `ganador`(puntos text) RETURNS tinyint(1)
- BEGIN
- DECLARE n, n2 INTEGER;
- SET n:=substring(puntos, 1, 3);
- SET n2=substring(puntos, 5, 7);
- IF n2>n THEN
- RETURN 1;
- ELSE
- RETURN 0;
- RETURN n;
- END IF;
- END
- -- Crea un procedimiento que diga si una palabra pasada como parámetro es palíndromo.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `palindromo`(palabra text)
- BEGIN
- IF palabra=REVERSE(palabra) THEN
- SELECT 'Es palindromo';
- ELSE
- SELECT 'No es palindromo';
- END IF;
- END
- -- Crea una función en la base de datos liga, que compruebe si los partidos ganados por un equipo coinciden con el campo 'PG' en la
- --tabla equipo.
- -- Usa una función para insertar registros de los movimientos en una cuenta bancaria de un cliente comprobando previamente que la fecha
- -- es menor que la actual y que la operación no deja la cuenta en negativo. La función devolverá 0 en caso de error y 1 en cualquier
- -- otro caso.
- -- Crea un procedimiento en el que no se pasen parámetros que inserte en la tabla T 5 registros con valores desde el 1 hasta el 5.+
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `insertar5`()
- BEGIN
- DECLARE i int;
- SET i=1;
- looping: LOOP
- INSERT INTO test.T VALUES(i);
- SET i=i+1;
- IF i=6 THEN
- LEAVE looping;
- END IF;
- END LOOP looping;
- END
- -- Sobre la base Test crea un procedimiento que muestre la suma de los primero n números enteros.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `suma`(n int)
- BEGIN
- DECLARE i int;
- DECLARE suma int;
- SET i=1;
- SET suma=0;
- REPEAT
- SET suma = suma+ i;
- SET i =i+1;
- UNTIL i = n+1 END REPEAT;
- SELECT suma;
- END
- -- Realiza un procedimiento que muestre la suma de los términos 1/n con n entre 1 y m. m!=0
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `nm`(m int)
- BEGIN
- DECLARE i INT;
- DECLARE suma FLOAT;
- SET suma=0;
- IF m < 1 THEN
- SELECT 'El parámetro debe ser un número mayor que 0';
- ELSE
- SET i = 1;
- sumar: WHILE i<=m DO
- SET suma = suma+ 1/i;
- SET i=i+1;
- END WHILE sumar;
- SELECT suma;
- END IF;
- END
- -- Crea una función que determine si un número es primo devolviendo 0 o 1.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `primo`(n INT) RETURNS int(11)
- BEGIN
- DECLARE i int DEFAULT 2;
- DECLARE b BOOLEAN DEFAULT 0;
- IF n<2 THEN
- RETURN 0;
- ELSEIF n=2 THEN
- RETURN 1;
- ELSE
- SET b = 1;
- calcularprimo: WHILE i<n DO
- IF MOD(n,i)=0 THEN
- SET b=0;
- LEAVE calcularprimo;
- END IF;
- SET i=i+1;
- END WHILE calcularprimo;
- RETURN b;
- END IF;
- END
- -- Usando la función anterior crea otra que calcule la suma de los primeros n números primos empezando en el 1.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` FUNCTION `sumarPrimos`(n INT) RETURNS int(11)
- BEGIN
- DECLARE i int DEFAULT 1;
- DECLARE suma int DEFAULT 0;
- sumar: WHILE n<>0 DO
- IF(SELECT primo(i)=1) THEN
- SET suma=suma+i;
- SET n=n-1;
- END IF;
- SET i=i+1;
- END WHILE sumar;
- RETURN suma;
- END
- -- Crea un procedimiento para generar y almacenar en la tabla primos, cuyos atributos son id, numero, los primeros números primos.
- -- comprendidos entre 1 y m.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `almacenarPrimos`(n INT)
- BEGIN
- DECLARE i int DEFAULT 1;
- CREATE TABLE IF NOT EXISTS test.Primos(
- id INT NOT NULL AUTO_INCREMENT,
- primo INT NOT NULL,
- PRIMARY KEY (id)
- );
- insertPrimo: WHILE n<>0 DO
- IF(SELECT primo(i)=1) THEN
- SET n=n-1;
- INSERT INTO test.Primos(primo) VALUES(i);
- END IF;
- SET i=i+1;
- END WHILE insertPrimo;
- END
- -- Modifica el procedimiento anterior para almacenar en la variable de salida @np el numero de primos almacenados.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `almacenarPrimos`(n INT)
- BEGIN
- DECLARE i int DEFAULT 1;
- SET @np =0;
- CREATE TABLE IF NOT EXISTS test.Primos(
- id INT NOT NULL AUTO_INCREMENT,
- primo INT NOT NULL,
- PRIMARY KEY (id)
- );
- insertPrimo: WHILE n<>0 DO
- IF(SELECT primo(i)=1) THEN
- SET n=n-1;
- INSERT INTO test.Primos(primo) VALUES(i);
- SET @np=@np+1;
- END IF;
- SET i=i+1;
- END WHILE insertPrimo;
- SELECT @np;
- END
- -- Crear un procedimiento que genere n registros aleatorios en la tabla movimientos. Cada registro deberá contener datos de clientes
- -- y cuentas existentes, la cantidad debe estar entre 1 y 100000 y la fecha será la actual.
- DELIMITER $$
- CREATE DEFINER=`root`@`%` PROCEDURE `movimientos`(n int)
- BEGIN
- CREATE TABLE IF NOT EXISTS test.movimientos(
- id INT NOT NULL AUTO_INCREMENT,
- id_cliente INT,
- id_cuenta INT,
- cash INT,
- dated VARCHAR(25),
- PRIMARY KEY (id)
- );
- SET @i=0;
- BUCLE: WHILE @i < n DO
- SET @id_cliente:= RAND()*100000;
- SET @id_cuenta := RAND()*10000000;
- SET @cash := RAND()*10000000;
- SET @dated:= NOW();
- INSERT INTO movimientos(id_cliente, id_cuenta, cash,dated) VALUES(@id_cliente, @id_cuenta, @cash,@dated);
- SET @i=@i+1;
- END WHILE BUCLE;
- END
- --- 29042014
- -- Realiza un procedimiento que muestre el nombre del autor que más noticias ha publicado en el último mes.
- -- Realiza un procedimiento que muestre los datos de los clientes, la cuenta y el saldo de los clientes con saldo negativo en alguna
- -- de sus cuentas.
- -- Crea un procedimiento que sume todos los ingresos y todos los cargos por separados en todas las cuentas de la base de datos banco.
- -- Crea un procedimiento que muestre el número máximo de partidos seguidos ganados por un equipo en casa
- -- La base de datos Bancos tiene una tabla cliente (cod_cliente, dni, nombre, apellido1, apellido2, direccion)
- -- tabla cuenta (tipo, fecha_creacion, saldo, cod_cuenta)
- -- tabla movimiento (fecha, cantidad, dni, cod_cuenta, id_mov)
- -- tabla tiene (dni, cod_cuenta)
Advertisement
Add Comment
Please, Sign In to add comment