| 
					 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');  | 
					
Categoría: MySQL
MySQL es un sistema de gestión de bases de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones. MySQL AB —desde enero de 2008 una subsidiaria de Sun Microsystems y ésta a su vez de Oracle Corporation desde abril de 2009— desarrolla MySQL como software libre en un esquema de licenciamiento dual. Leer más.
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');  | 
					
1×02: Invierte cadena
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						/* 	Ejercicio2: 	Codificar un procedimiento que reciba una cadena y la visualice al revés. */ delimiter $$ drop procedure if exists 1x02 $$ create procedure 1x02(in cad varchar(10)) 	begin 		select reverse(cad) as 'Resultado'; 	end$$ delimiter ; -- call 1x02('Hola mundo')  |