Crear y configurar procedimientos almacenados en cual sistema de gestion de base de datos es unproceso simple. En este articulo veremos como crear,configurarlos no solo en sql server sino tambien para mysql o postgresql.
Que es un procedimiento almacenado ?
Es un código que puedes guardar y reutilizar. Es muy util pues reduce los tiempos de ejecusion de las consultas siempre que tengas los indices bien definidos.
Para que sirven ?
Suelen ser utilizadas para reducir el deserrollo de CRUD, ademas para organizar mejor el código y preservar una integridad de datos óptima. El uso de procedimientos también suele suponer una mejora de rendimiento en tareas relativamente complejas. siempre claro tomando en cuenta que todos procedimiento debe estar bien documentado.
Sintaxis de un procedimiento sin parametros
CREATE PROCEDURE nombre procedimiento
AS
–Consulta a realizar
SELECT * FROM tabla
GO
Parametros de un procedimiento
Es un argumento con un tipo de datos definido para ser consumido por el procedimiento como una variable que debe ser alimentada por el usuario o el contexto.
Estas pueden ser:
- IN: La aplicación o usuario que llama este procedimiento tendrá que pasar el valor. El procedimiento trabajará esta ifnormación.
- OUT: El valor de esta parametro aunque es incertado por el usuario puede ser modificado por el procedimiento y siempre reflejara el nuevo valor al concluir su ejecusion
- INOUT: Es una mezcla de los dos conceptos.
Como funciona un Procedimiento almacenado Sql server
Necesitaremos el siguiente software:
– Microsoft SQL Server Management Studio
Antes de crear un procedimiento necesita saber cuál es el resultado esperado. En este ejemplo, queremos ver todos los campos de la tabla Address.
En Microsoft SQL Server Management Studio conectarse a su servidor y abrir una nueva ventana de consulta. Seleccione la base de datos AdventureWorks2012.
Entonces, el código T-SQL simple que se ejecuta en la base de datos AdventureWorks sería el siguiente.
- SELECT * FROM Person.Address
Para crear un procedimiento almacenado para hacer esto, el código se vería así:
Al crear un procedimiento almacenado, puede usar CREATE PROCEDURE o CREATE PROC. Después del nombre del procedimiento almacenado, debe usar la palabra clave «AS». Al finalizar el procedimiento almacenado, debe terminar con la instrucción GO.
Sql server procedimiento sin parametros
USE AdventureWorks GO CREATE PROCEDURE dbo.listadedirecciones AS SELECT * FROM Person.Address GO Para llamar un procedimiento almacenado, puede usar EXEC o simplemente el nombre del procedimiento. Si desea pasar paráEXEC listadedirecciones --o simplemente Exec listadedirecciones GO
Sintaxis con parametros Sql server
USE AdventureWorks GO CREATE PROCEDURE dbo.listadedireccionesconparametro @param int AS SELECT * FROM Person.Address where id = param GO Para llamar un procedimiento almacenado, puede usar EXEC o simplemente el nombre del procedimiento. Si desea pasar paráEXEC listadedirecciones --o simplemente Exec listadedireccionesconparametro 1 GO
En este ultimo vemos un parametro tipo entero que debe ser indicado por el usuario antes de ejecutarse.
Crear un Procedimiento almacenado MySQL
Ahora que hemos configurado una base de datos y una tabla, vamos a crear tres procedimientos almacenados para mostrar el uso y las diferencias de cada tipo de parámetro.
Al definir los procedimientos, tendremos que usar delimitadores para indicar a MySQL que se trata de un bloque independiente. En los siguientes ejemplos, DELIMITER $$ frena la ejecución de MySQL, que se retomará de nuevo en la sentencia DELIMITER del final.+
Sintaxis procedimiento Mysql
suponiendo que sabes crear una base de datos con el comando create database crearemos una tabla por codigo de productos la cual sera la base de nuestro procedimiento.
CREATE TABLE productos (
articuloid INT NOT NULL AUTO_INCREMENT,
proveedorid int,
articulo VARCHAR(20) NOT NULL,
estado VARCHAR(20) NOT NULL DEFAULT 'disponible',
precio FLOAT NOT NULL DEFAULT 0.0,
PRIMARY KEY(id)
);
La sintaxis para crear un procedimiento que consulte esta tabla seria:
DELIMITER $$
CREATE PROCEDURE obtenerProductosPoridarticulo(IN id int)
BEGIN
SELECT *
FROM productos
WHERE articuloid = id;
END$$
DELIMITER
El id del articulo, sera enviado por el usuario usando el parámetro ID que hemos definido como IN. para llamar un procedimiento almacenado en mysql seria usando la clausula CALL en vez de la EXEC de sql server.
CALL obtenerProductosPoridarticulo(1)
El resultado sera un registro con el articulo seleccionado.
importante luego de ejecutar este comando no podras recuperar el procedimiento este comando aplica para mysql, sql server , postgresql y demas.
¿Cómo crear un store procedure en PostgreSQL?
Para crear un procedimiento en PostgreSQL necesitamos tomar encuenta cual es la sintaxis para su ejecusion para los fines.
ver sintaxis
CREATE PROCEDURE elprocedimiento(a integer, b integer,b integer)
LANGUAGE SQL
AS $$
INSERT INTO mytable VALUES (ab, bc,cd);
$$;
El $$
se usa para iniciar y finalizar una cadena en sql server utilizamos el punto y coma(;). en este caso estamos insertando valores en una tabla.
Llamar un procedimiento almacenado, es igual que vimos en mysql usando la clausula CALL seguida del nombre del procedimiento y los paramentors.
Ver ejemplo ejecutar un proc en PostgreSQL :
CALL insert_data (1, 2);
Cómo borrar un procedimiento almacenado
Para borrar un procedimiento almacenado haciendo uso de la sentencia DROP, requieres indicar que deseas borrar un procedimiento seguido de la tabla.
DROP PROCEDURE nombre de tabla;
En conclusion
En resumen , un procedimientos almacenados o store procedure es un código SQL que se guarda para su uso repetitivo. En este ejemplo, creamos un procedimiento almacenado simple y luego lo llamamos utilizando EXEC o el nombre del procedimiento.
Esto es asi para mysql ,sqlserver y postgresql.
Ahora que sabe cómo crear y llamar un procedimiento almacenado, ¡es hora de ponerlo en práctica! Si tiene alguna pregunta sobre este tutorial o cualquier otro tema relacionado con la base de datos solo comenta y te responderemos.