Skip to content

Ejecutar Procedimientos Almacenados

arpincheira edited this page Oct 7, 2020 · 1 revision

Los procedimientos almacenados son pequeños programas que podemos ejecutar directamente en los sistemas de bases de datos. En este ejemplo veremos como ejecutar nuestros procedimientos almacenados en PostgreSQL.

El procedimiento almacenado que vamos a ejecutar es el siguiente:

CREATE OR REPLACE FUNCTION fib (
    numero integer
) RETURNS integer AS $$
BEGIN
    IF numero < 2 THEN
        RETURN numero;
    END IF;
RETURN fib(numero - 2) + fib(numero - 1);
END;
$$ language plpgsql

El procedimiento también está disponible en este link

Si tienes instalado postgres en tu computador

El primer paso es guardar el proceso anterior en un archivo fibonacci.sql. Una vez que lo tenemos guardado en nuestro computador, abrimos la consola en el directorio donde se encuentra el archivo. (Si el archivo está en el escritorio, abres la consola desde el escritorio)

Tenemos que entrar en la consola de postgreSQL mediante el comando

psql [nombre base de datos]

Si seguiste el tutorial PostgreSQL y psycopg2, entonces deberías tener la base de datos ExampleDB creada, de todas formas puedes crear otra base de datos con el comando

createdb [nombre base de datos]

Una vez que estemos dentro, ejecutamos el siguiente comando en la consola de postgres:

\i fibonacci.sql

Si todo salió bien, postgres nos mostrará el mensaje CREATE FUNCTION.

Ahora podemos utilizar la función con el siguiente comando:

SELECT fib(7);

Este comando nos entregará el 7mo número en la sucesión de fibonacci.

Si tienes postgres, pero quieres correr los procedimientos mediante jupyter notebooks.

Primero que nada cargamos la librería ipython-sql corriendo lo siguiente en una celda de código

%load_ext ipython-sql

Luego establecemos la conexión con la base de datos mediante el siguiente comando, tambien en una celda de código:

%%sql 
postgresql://<usuario_de_postgres>:<pass_de_postgres>@localhost/<nombre_db>

Donde debes cambiar con tus datos correspondientes en las secciones marcadas con <>

Una vez que ejecutamos esta celda, podemos definir nuestro procedimiento almacenado directamente en otra celda de código del Jupyter Notebook:

%%sql
CREATE OR REPLACE FUNCTION fib (
numero integer
) RETURNS integer AS $$
BEGIN
    IF numero < 2 THEN
        RETURN numero;
    END IF;
RETURN fib(numero - 2) + fib(numero - 1);
END;
$$ language plpgsql

Una vez que ejecutamos esta celda, podemos ejecutar la funcion mediante lo sigiuente (al igual que siempre, en una celda de código).

%%sql
SELECT fib(7);

Si no te funciona postgres, o no lo quieres instalar

Para el desarrollo del proyecto les designamos un servidor que ya tiene Postgres instalado, por lo que pueden correr los procedimientos ahí.

Pueden ver una guía de como realizar esto aquí