lunes, 30 de enero de 2017

1.Crear un procedimiento almacenado que devuelva el valor de la hipotenusa
 de un triángulo a partir de los valores de sus lados que se pasan como parámetros.
DELIMITER $$
 DROP PROCEDURE IF EXISTS hipo$$
CREATE PROCEDURE hipo(a INT, b INT)              USE jardinería;
BEGIN                                                                              CALL hipo (1,2);
 SELECT SQRT(POW(a,2)+POW(b,2)) AS hipotenusa;
END;$$
DELIMITER ;
2.Crea un procedimiento que muestre dos cadenas, pasadas como parámetros,
 concatenadas y en mayúsculas. Funciones texto:
DELIMITER $$
DROP PROCEDURE IF EXISTS conca$$
 CREATE PROCEDURE conca(a CHAR(50), b CHAR(50))
 BEGIN
 SELECT UPPER(CONCAT(a, ‘ ‘, b)) AS concatenacion;
 END;$$ DELIMITER ;


Crear una función almacenada, para mostrar el día de la semana según
 un valor de entrada numérico, de la siguiente forma: 1 para lunes, 2 para martes, etc.
 DELIMITER $$
DROP FUNCTION IF EXISTS calendario$$
 CREATE FUNCTION calendario(n INT) RETURNs CHAR(10)
 NO SQL
 BEGIN
DECLARE s CHAR(10);
 CASE n
 WHEN 1 THEN SET s = "Lunes";
  WHEN 2 THEN SET s = "Martes";
 WHEN 3 THEN SET s = "Miércoles";
  WHEN 4 THEN SET s = "Jueves";
 WHEN 5 THEN SET s = "Viernes";
 WHEN 6 THEN SET s = "Sábado";
 WHEN 7 THEN SET s = "Domingo";
 ELSE SET s = "Error";
END CASE;
 RETURN (s);
 END; $$
DELIMITER ;




Funcion almacenada que calcule la suma de 2 numeros
Comprendidos entre dos números introducidos como parámetro.
Los dos números no deben incluirse en la suma.
DELIMITER $$
DROP FUNCTION IF EXISTS suma_num$$
CREATE FUNCTION suma_num(n1 INT, n2 INT) RETURNS INT
NO SQL
DECLARE cont, sum INT;
IF n2 < n1 THEN
BEGIN
SET sum = n1;
SET n1=n2;

SET n2= sum;
END;
END IF;
SET sum =0;
SET cont= n1+1;
 b1: WHILE cont <n2 DO
SET sum= sum+cont;
SET cont = cont+1;
END WHILE b1;
RETURN (sum);
END; $$
DELIMITER;



Crear procedimieinto q reciba 5 numeros como parámetro
Y calcular su media aritmética.
DELIMITER $$
DROP PROCEDURE IF EXISTS ejer1$$
CREATE PROCEDURE eje1(num1 int, num2 int, num3 int,
Num4 int, num5 int)
BEGIN
DECLARE RESULT INT;
DECLARE TIMES INT;
SET TIMES=5;
SET RESULT=((num1+num2+num3+num4+num5)/TIMES);
SELECT RESULT AS Resultado;      use bd;
END;$$                                    call ejer1(1,2,3,4,5);
DELIMITER;

Crear procedimiento q reciba 10 numeros como parámetro
E indique cual es mayor y cual es menor.
DELIMITER $$
DROP PROCEDURE IF EXISTS ejer2$$
CREATE PROCEDURE ejer2(uno int, dos int, tres int, cuatro …)
BEGIN
SELECT GREATEST(uno,dos,tres,cuatro,cinco..) AS Mayor;
SELECT LEAST(uno,dos tres, cuatro, cinco..) AS Menor;
END;
DELIMITER $$    use test;            
 CALL ejer2(1,2,3,4,5,6,7,8,9,10);
                       








Crear función q reciba parámetro un numero y devuelva 0
Si no es primo o un 1 si lo es:
DELIMITER $$
DROP FUNCTION EXISTS ejer3$$
CREATE FUNCTION ejer3(num INT)
RETURNS INT
BEGIN
   DECLARE i INT;
   DECLARE primo INT;
   SET i=2;
   SET primo=1;
IF num < 2 THEN

  SET primo=0;
ELSEIF num=2 THEN
  ELSE primo=1;
ELSE
Bucle: WHILE i <= SQRT(num) DO
IF (num%i)= 0 THEN
SET primo=0;
LEAVE bucle;
END IF;                                     use test;
SET i=i+1;                                  SELECT ejer3(50);
END WHILE;
RETURN (primo);
END IF;
END;$$







SERIE FIBONACCI comienza en 0 y el segundo 1 y resto
Calculan sumando dos números anteriores
N=(n-2)+(n-1).(ej:0,1,2,3,5,8..)
DELIMITER $$
DROP PROCEDURE IF EXISTS ejer4$$
CREATE PROCEDURE ejer4(num INT)
BEGIN
DECLARE num1 INT;
DECLARE num2 INT;
DECLARE CNT INT;
DECLARE CNT2 INT;
DECLARE result INT;
DECLARE FIBONACCI VARCHAR(255);
SET num1=0;
SET num2=1;
SET CNT=0;
SET FIBO=””;
SET CNT2=(num-2);

SET FIBO=CONCAT(FIBO,num1);
SET FIBO=CONCAT_WS(‘,’,FIBO,num2);
WHILE CNT < CNT2 DO
SET result=num1+num2;
SET FIBO=CONCAT_WS(‘,’,FIBO,result);
SENT CNT=CNT+1;
SET num1=num2;                     call ejer4(10);
SET num2=result;
END WHILE;
SELECT FIBO AS ‘Serie fibonacci’;
END;$$
DELIMITER $$

No hay comentarios:

Publicar un comentario