Bienvenidos a un nuevo artículo formativo del motor de base de datos open source más potente del mercado; PostgreSQL. En la entrega de esta semana hablaremos de las funciones en PostgreSQL, en especial estaremos viendo cómo manejarlas.
Empecemos recordando que en PostgreSQL disponemos de una gran cantidad de funciones. Podemos sacar un listado de todas las funciones que tenemos disponibles, tanto las que proporciona el servidor PostgreSQL, como nuestras propias funciones. Para ello tenemos que realizar una consulta hacia la tabla pg_proc del catálogo ó si utilizamos el cliente estándar, ejecutar el comando \df.
En esta entrada mencionaremos los comandos que utilizamos con frecuencia a la hora de crear nuestras propias funciones.
Comando CREATE FUNCTION
Crear una función o procedimiento es relativamente sencillo, dependiendo de la complicidad y del nivel de programación que tengamos. Actualmente se utiliza el comando CREATE FUNCTION para crear funciones y procedimientos. La diferencia está en el tipo de dato que tienen que devolver. Además podemos indicarle si necesita parámetros de entrada.
En este caso creamos una función escrita en el lenguaje SQL, devuelve un tipo de dato text y no requiere de parámetros de entrada.
CREATE FUNCTION myFuncion() RETURNS text AS
'conulta;'
LANGUAGE SQL;
Teniendo en cuenta que podemos utilizar otros lenguajes de programación para crear nuestras funciones o procedimientos. Vamos a crear una función utilizando el lenguaje PL/pgSQL, que es un lenguaje de programación estructurado. Además requerirá unos parámetros de entrada que debemos de introducir en el momento de llamar a la función.
CREATE FUNCTION myFuncion2(variable int) RETURNS int AS $$
BEGIN
RETURN variable + 1;
END;
$$ LANGUAGE plpgsql;
El comando CREATE FUNCTION también lo utilizamos para crear un Stored Procedure, en este caso la función no retorna nada. Para ello debemos de indicar el tipo de dato VOID. Permite recibir parámetros de entrada al crear el procedimiento almacenado.
CREATE FUNCTION myProcedure(col1 VARCHAR(20), col2 CHAR) RETURNS void AS $$
BEGIN
INSERT INTO myTabla VALUES (col1, col2);
END;
$$ LANGUAGE plpgsql;
Comando SELECT
Para llamar a una función, ya sea creada por nosotros mismo o proporcionada por el servidor PostgreSQL. Es tan sencillo como ejecutar el comando SELECT junto al nombre de la función y sus paréntesis. Dentro de estos paréntesis es donde se incluye los parámetros si los requiere la función.
SELECT myFuncion();
SELECT myFuncion2(5);
Comando DROP FUNCTION
Hay que tener un especial cuidado cuando se vaya a eliminar una función, pues es posible que tengamos varias funciones que tengan el mismo nombre pero reciban diferentes argumentos. Para ilustrar este caso, incluimos el siguiente ejemplo. Es importante tener muy claro cuál es la función que queremos eliminar, por ello es recomendable ejecutar una llamada a todas las funciones y revisar todas aquellas que compartan el mismo nombre.
DROP FUNCTION myFuncion();
DROP FUNCTION myFuncion(int);
Haciendo uso de estos comandos, podemos realizar el manejo de todas las funciones que tenemos en nuestro servidor.
Si no conocías el uso de estos comandos, o si no conocías cómo puedes manejar las diferentes funciones con las que cuenta PostgreSQL, seguro este post ha llegado como anillo al dedo.
Si quieres aprender de forma extensa sobre funciones en PostgreSQL, puedes realizar nuestro Curso de Funciones y Procedimientos.
Estamos preparando una masterclass en la que enseñaremos de forma práctica lo visto en este post, pero con una ampliación a casos más avanzados.
¡Mantente al pendiente y no te la pierdas!