1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* Ejercicio 10: Realizar un procedimiento que acepte un centro como argumento y devuelva (visualice) todos los datos de los empleados que en él trabajan. */ delimiter $$ drop procedure if exists 1x10 $$ create procedure 1x10(in elCentro varchar(30)) begin select * from empleados where numde in ( select numde from departamentos where numce = ( select numce from centros where nomce like elCentro ) ); end $$ delimiter ; -- call 1x10('RELACION CON CLIENTES'); |
Categoría: Informatica
1×09: Consulta doble anidada con un único valor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/* Ejercicio 9: Tablas Centros/Departamentos/Empleados (script primeros_pasos.sql) Realizar un procedimiento que acepte un departamento como argumento y devuelva (visualice) todos los datos de los empleados que en él trabajan. */ delimiter $$ drop procedure if exists 1x09 $$ create procedure 1x09( in elDepartamento varchar(30) ) begin select * from empleados where numde = ( select numde from departamentos where nomde like elDepartamento ); end $$ delimiter ; -- call 1x09('SECTOR SERVICIOS'); |
1×08: Descompón un importe de euros en billetes y monedas.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
/* Ejercicio 8: Implementar un procedimiento que reciba un importe y visualice el desglose del cambio en unidades monetarias de céntimos de €, 1€, 2€, 5€, 10€, 50€. Ej. 58.9 = 1 billete de 50€, 1 billete de 5 €, 3 monedas de 1€ y 90 céntimos de € */ delimiter $$ drop procedure if exists 1x07 $$ create procedure 1x07(in e double) begin # Variables: declare euros integer default e div 1; #Parte entera declare centimos integer default truncate( (e-floor(e)), 2 )*100 div 1; #Parte decimal declare cincuentaEuros, diezEuros, dosEuros, unEuro, cincuentaCents, veinteCents, cincoCents, dosCents, unCents integer default 0; # Euros: set cincuentaEuros = euros div 50; set diezEuros = euros mod 50 div 10; set dosEuros = euros mod 50 mod 10 div 2; set unEuro = euros mod 50 mod 10 mod 2 div 1; # Centimos: set cincuentaCents = centimos div 50; set veinteCents = centimos mod 50 div 20; set cincoCents = centimos mod 50 mod 20 div 5; set dosCents = centimos mod 50 mod 20 mod 5 div 2; set unCents = centimos mod 50 mod 20 mod 5 mod 2 div 1; # Muestra el resultado de forma desglosada: select e as 'Total', if( cincuentaEuros = 0, null, cincuentaEuros ) as '50€', if( diezEuros = 0, null, diezEuros ) as '10€', if( dosEuros = 0, null, dosEuros ) as '2€', if( unEuro = 0, null, unEuro ) as '1€', if( cincuentaCents = 0, null, cincuentaCents ) as '0,50€', if( veinteCents = 0, null, veinteCents ) as '0,20€', if( cincoCents = 0, null, cincoCents ) as '0,05€', if( dosCents = 0, null, dosCents ) as '0,02€', if( unCents = 0, null, unCents ) as '0,01€' ; end $$ delimiter ; -- call 1x07(524.60); |
1×07: Muestra solo caracteres alfabéticos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
/* Ejercicio 7: Escribir un procedimiento que visualice solamente caracteres alfabéticos sustituyendo cualquier otro carácter no alfabético por blancos a partir de una cadena que se pasará en la llamada. */ delimiter $$ drop procedure if exists 1x07 $$ create procedure 1x07(in cad varchar(30)) begin declare cadTemp varchar(30) default ''; declare carAscii int; declare i int default 1; while i <= char_length(cad) do set carAscii = ascii(mid(cad,i,1)); if carAscii >= 65 && carAscii <= 90 || carAscii >= 97 && carAscii <= 122 then set cadTemp = concat(cadTemp,mid(cad,i,1)); else set cadTemp = concat(cadTemp,' '); end if; set i = i + 1; end while; select cadTemp as 'Solo letras'; end$$ delimiter ; -- call 1x07('H0l@ qu3 t@l?'); |
1×06: Calcula número de trienios
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* Ejercicio 6: Escribir un procedimiento que visualice los trienios completos que hay entre dos fechas. */ delimiter $$ drop procedure if exists 1x06 $$ create procedure 1x06(in fecha1 date, in fecha2 date) begin select abs(datediff(fecha1,fecha2)) div 1095 as trianios; end$$ delimiter ; -- call 1x06('2012-04-12','2020-06-01'); |
1×05: Calcula número de años
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/* Ejercicio 5: Desarrollar un procedimiento que visualice el número de años completos que hay entre dos fechas que se pasan como argumentos. */ delimiter $$ drop procedure if exists 1x05 $$ create procedure 1x05(in fecha1 date, in fecha2 date) begin select abs(datediff(fecha1,fecha2)) div 365 as anios; end$$ delimiter ; -- call 1x05('2012-04-12','2020-06-01'); |
1×04: Usa otro procedimiento
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* Ejercicio 4: Escribir un procedimiento que haga uso del procedimiento anterior. */ delimiter $$ drop procedure if exists 1x04 $$ create procedure 1x04() begin call 1x03('2012-04-12'); end$$ delimiter ; -- call 1x04; |
1×03: Recibe fecha y devuelve año
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* Ejercicio 3: Escribir un procedimiento que reciba una fecha y visualice el año, en número, correspondiente a esa fecha. */ delimiter $$ drop procedure if exists 1x03 $$ create procedure 1x03( in fecha date ) begin select fecha as 'Fecha', year(fecha) as 'Año'; end$$ delimiter ; -- call 1x03('2012-04-12'); |