Herramientas Informaticas

Mes: mayo 2022

CURSO MARIADB -PROCEDIMIENTOS ALMACENADOS #10

Un procedimiento almacenado (stored procedure en inglés) es un programa (o procedimiento) almacenado físicamente en una base de datos. Su implementación varía de un gestor de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

Los procedimientos pueden ser ventajosos: cuando una base de datos es manipulada desde muchos programas externos. Al incluir la lógica de la aplicación en la base de datos utilizando procedimientos almacenados, la necesidad de embeber la misma lógica en todos los programas que acceden a los datos es reducida. Esto puede simplificar la creación y, particularmente, el mantenimiento de los programas involucrados.

Podemos ver un claro ejemplo de estos procedimientos cuando requerimos realizar una misma operación en un servidor dentro de algunas o todas las bases de datos y a la vez dentro de todas o algunas de las tablas de las bases de datos del mismo. Para ello podemos utilizar a los Procedimientos almacenados auto creables que es una forma de generar ciclos redundantes a través de los procedimientos almacenados.

Hoy en día existe un debate si se debe de usar procedimientos almacenados, en mi opinión digo que si, hay pros y contras en usar procedimientos almacenados, pero al final es mejor mejor practica usarlos ya que funcionara mas eficientemente siempre y cuando se haga bien, también si se da el caso de que sea una aplicación de escritorio la mayor parte de las veces no se necesitara recompilar y actualizar el ejecutable, si no que solo se tendrá que modificar la base de datos .

Bien como prueba vamos a hacer un procedimiento almacenado básico, tal procedimiento va a insertar en la tabla clientes y luego ejecutara una consulta.

CREATE PROCEDURE `SPR_InsertaCliente`(IN `strNombre` VARCHAR(256)
				    , IN `strRFC` VARCHAR(15)
                                    , IN `strDireccion` VARCHAR(15)) 

BEGIN 

	insert into clientes(nombres 
			    ,RFC
			    ,direccion ) 
			
		    values( strNombre 
			    ,strRFC
			    ,strDireccion ); 

		select * from clientes; 
END;

Ahora mandamos llamar el procedimiento almacenado que hara 2 cosas, una es insertar

SET
    @p0 = 'Cesar';
SET
    @p1 = 'XXXA';
SET
    @p2 = 'Conocido';
CALL
    `SPR_InsertaCliente`(@p0, @p1, @p2);

O simplemente lo podemos invocar de la siguiente manera

CALL SPR_InsertaCliente('Cesar', 'XXXA', 'Conocido');

El resultado será el siguiente



id	nombres	RFC	direccion	
1	Julio	xxx	conocido	
2	kakaroto	xxe	vegita	
3	Cesar	XXXA	Conocido	
4	Cesar	XXXA	Conocido	
5	Cesar	XXXA	Conocido	

Nos arroja varias ya que hemos ejecutado varias veces el procedimiento

Vídeo Demostrativo

CURSO MARIADB 10 – VISTAS

Las vistas en MariaDB o MySQL son tablas virtuales que no almacenan ningún dato sino que es el resultado de la consulta de varias tablas o una según se allá hecho la consulta, por ejemplo, tenemos la tabla clientes y la tabla ventas, en ventas aparte de los demás campos propios de una venta tenemos el idCliente que se relaciona con el campo id de la tabla cliente y de allí podemos tomar el nombre, por ejemplo generamos el siguiente guion para obtener todos los datos.

SELECT a.id as idVenta
	, a.idCliente
    , a.Concepto
    , a.total
    , b.nombres as nombreCliente
    , b.RFC as RFCCliente
    , b.direccion	as direccion
FROM ventas a
	,clientes b 
   where idCliente=b.id

Nos dará como resultado lo siguiente

idVenta	idCliente	Concepto	total	nombreCliente	RFCCliente	direccion	
1	1	venta de equipo de computo	10000.00	Julio	xxx	conocido	
2	2	Venta de semillas del hermitaño	5.00	kakaroto	xxe	vegita	

Bien en base a esa consulta podemos crear la vista

CREATE
 VIEW `vw_vistaVenta`
 AS SELECT a.id as idVenta
    , a.idCliente
    , a.Concepto
    , a.total
    , b.nombres as nombreCliente
    , b.RFC as RFCCliente
    , b.direccion   as direccion
FROM ventas a
    ,clientes b 
   where idCliente=b.id;

Ahora solo en lugar de escribir todo el código que pusimos al principio solo pondremos lo siguiente

select * from vw_vistaVenta;

Y nos arroja el mismo resultado sin tanto código

idVenta	idCliente	Concepto	total	nombreCliente	RFCCliente	direccion	
1	1	venta de equipo de computo	10000.00	Julio	xxx	conocido	
2	2	Venta de semillas del hermitaño	5.00	kakaroto	xxe	vegita	

Creado con WordPress & Tema de Anders Norén