Saltar al contenido

Procedimientos almacenados SQL ejemplos

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.

Índice

    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

    adventureworks

    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.

    1. 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.