Procedimientos Almacenados en MySQL (MariaDB) Parte II
Seguimos con el tema de los procedimientos almacenados en MySQL, pero ahora veremos el uso de variables dentro de los mismos stored procedures, pero primero veamos algunos conceptos básicos:
Variable: Una variable en informática es un espacio reservado en memoria, para almacenar un valor, que puede cambiar con el tiempo, tiene un nombre simbólico y un tipo de dato que almacena.
Datos numéricos
BIT o BOOL, para un número entero que puede ser 0 ó 1INT para almacenar números enteros, en un rango de -2147463846 a 2147483647. Si configuramos este dato como unsigned, el rango es 0 a 4294967295
BIGINT número entero con rango de valores desde -9223372036854775808 a 9223372036854775807. Unsigned, desde 0 a 18446744073709551615.
FLOAT (m,d) representa números decimales. Podemos especificar cuantos dígitos (m) pueden utilizarse (término también conocido como ancho de pantalla), y cuantos en la parte decimal (d). Mysql redondeará el decimal para ajustarse a la capacidad.
Caracteres o cadenas
CHAR Este tipo se utiliza para almacenar cadenas de longitud fija. Su longitud abarca desde 1 a 255 caracteres.VARCHAR (n) Al igual que el anterior se utiliza para almacenar cadenas, en el mismo rango de 1-255 caracteres, pero en este caso, de longitud variable. Un campo CHAR ocupará siempre el máximo de longitud que le hallamos asignado, aunque el tamaño del dato sea menor (añadiendo espacios adicionales que sean precisos). Mientras que VARCHAR solo almacena la longitud del dato (n), permitiendo que el tamaño de la base de datos sea menor. Eso si, el acceso a los datos CHAR es mas rápido que VARCHAR.
TINYTEXT, TINYBLOB para un máximo de 255 caracteres. La diferencia entre la familia de datatypes text y blob es que la primera es para cadenas de texto plano (sin formato) y case-insensitive (sin distinguir mayusculas o minusculas) mientras que blob se usa para objetos binarios: cualquier tipo de datos o información, desde un archivo de texto con todo su formato (se diferencia en esto de el tipo Text) hasta imágenes, archivos de sonido o video.
Fechas
DATE para almacenar fechas. El formato por defecto es YYYY MM DD desde 0000 00 00 a 9999 12 31.DATETIME Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos
TIMESTAMP Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo
TIME almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de ‘HH:MM:SS’
YEAR almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos.
Muy bien queridos lectores, ya sabemos lo que son las variables y los tipos de datos que almacenan, en esta ocasión, en esta segunda parte de los procedimientos almacenados, veremos su uso y su utilidad, ya que nos darán mayor dinamismo a nuestros procedimientos, pero basta de teoría, pasemos a los hechos que es lo que nos gusta y como aprendemos.
Ejericicio 1
Crear un procedimiento
almacenado (SP) que nos permita ingresar un país, validar que el país no
exista y en caso de que exista, actualizar la información y mostrar la leyenda “País ya existe, se actualizarán los datos”,
haciendo uso de las variables
DELIMITER $$
DROP PROCEDURE IF EXISTS insertapaises;
CREATE PROCEDURE `insertapaises`(codigo varchar(4), nombre varchar(100), bandera varchar(100), continente varchar(100))
BEGIN
declare existe int;
set existe = (select count(*) from paises where codigopais = codigo);
if existe =0
then
select existe;
insert into paises (codigopais, nombre, bandera, fecha_creacion, continente)
values (codigo, nombre, bandera, now(), continente);
else
SELECT 'Pais ya existe,
se actualizarán los datos';
UPDATE paises set nombre = nombre, bandera=bandera where codigopais=codigo;
END if;
end$$
Como ven, la creación de stored procedure es similar, el procedimiento se llamará insertapaises y recibirá 4 parámetros (codigo, nombre, bandera y continente), todos ellos varchar, pero hay algunos cambios cuando se utilizan variables
declare existe int;
Para declarar una variable se hará con la instrucción DECLARE, despues el nombre de la variable, en este caso se llama EXISTE, que utilizaremos para validar si el país existe y por último el tipo de dato, en este caso INT
set existe = (select count(*) from paises where codigopais = codigo);
if existe =0
then
select existe;
insert into paises (codigopais, nombre, bandera, fecha_creacion, continente)
values (codigo, nombre, bandera, now(), continente);
else
SELECT 'Pais ya existe, se actualizarán los datos';
UPDATE paises set nombre = nombre, bandera=bandera where codigopais=codigo;
END if;
end$$
Ahora que tenemos el procedimiento almacenado, lo vamos a ejecutar y a probar, recuerden que para mandar llamar a un procedimiento almacenado se hace uso de la instrucción Call, así q lo mandaremos llamar de esa forma.
call insertapaises ('PRU', 'PAIS DE PRUEBA', 'prueba.png', 'America')
Si volvemos a ejecutar el procedimiento almacenado insertando nuevamente el código PRU, pero con otro nombre, automáticamente hará el UPDATE, tal como se lo programamos en el procedimiento.
call insertapaises ('PRU', 'PAIS DE
PRUEBA-2', 'prueba.png', 'America');
Les pido compartan, den +1, comenten o den un clic en algún anuncio. Muchas gracias
MariaDB - Procedimientos Almacenados Parte I
Maria DB - Procedimientos Almacenados Parte III
MariaDB - Procedimientos Almacenados Parte I
Maria DB - Procedimientos Almacenados Parte III
No hay comentarios.:
Publicar un comentario