Este documento explica cómo crear funciones en PostgreSQL. Indica que las funciones permiten extender el lenguaje SQL mediante segmentos de código para procesar datos. Explica la sintaxis básica para crear funciones y varios ejemplos como crear funciones para sumar números, crear y modificar tablas, y consultar datos.
1. Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creación de Funciones
Ing. Eddie Malca Vicente
emalca@gmail.com
@emalca
2. Qué son las Funciones
• En PostgreSQL no existe una diferencia muy
marcada entre una función y un procedimiento
almacenado, a diferencia de otros SGBD. Por
ello el tratamiento las primeras se usan a modo
de las segundas.
• Las funciones son segmentos de código
creados por el sistemas o por el usuario para
desarrollar procesos, es decir ejecutar
acciones que no existen como tal dentro del
lenguaje SQL utilizado, es decir extendemos el
lenguaje de consultas.
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
3. PostgreSQL y los lenguajes
procedurales
• PostgreSQL nos permite trabajar con más de
un lenguaje procedural, tales como:
• PL/pgSQL
• C
• C++
• Java PL/Java Web
• plPHP
• PL/Python
• PL/Ruby, entre otros =)
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
5. Creación de un Lenguaje
CREATE LANGUAGE plpgsql;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
En servidores Windows el lenguaje PLPGSQL ya viene
instalado por defecto, en servidores Linux hay que instalarlo
antes de usarlo.
6. Sintaxis Básica
CREATE OR REPLACE FUNCTION [nombre
de la función]([parámetros])
RETURNS [tipo de dato que retorna] AS
[definición de la función] LANGUAGE
[lenguaje utilizado]
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
7. Ejemplo
CREATE OR REPLACE FUNCTION
sumar(integer,integer)
RETURNS integer
AS
‘SELECT $1+$2;’
LANGUAGE ‘sql’;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creamos una función que reciba como
parámetros dos números enteros y devuelva
como resultado la suma de ambos
OBS: las variables son accedidas como $1,$2,…$n
Se accede a ella mediante SELECT sumar(3,4);
8. Trabajando con Tablas
CREATE OR REPLACE FUNCTION creatabla()
RETURNS VOID
AS
'CREATE TABLE tb_pais(
pais_id VARCHAR(5),
pais_nom VARCHAR(20),
CONSTRAINT pk_pais PRIMARY KEY (pais_id));'
LANGUAGE sql;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Es posible trabajar con las tablas de una base de
datos, por ejemplo creamos una tabla llamada
tb_pais:
Se ejecuta con SELECT creatabla();
Obviamente se SETEA antes el SCHEMA de trabajo primero.
9. Trabajando con Tablas
CREATE OR REPLACE FUNCTION insertaregistros()
RETURNS VOID
AS
$$
INSERT INTO tb_pais VALUES('P001','ARGENTINA');
INSERT INTO tb_pais VALUES('P002','BRASIL');
INSERT INTO tb_pais VALUES('P003','PERU');
INSERT INTO tb_pais VALUES('P004','URUGUAY');
$$
LANGUAGE sql;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Como segundo ejemplo podemos crear una
función que ingrese registros a la tabla creada:
Se ejecuta con SELECT insertaregistros();
Otra forma de sintaxis es la que se muestra en la siguiente
diapositiva.
10. Trabajando con Tablas
CREATE OR REPLACE FUNCTION insertaregistros2()
RETURNS VOID
AS
'
INSERT INTO tb_pais VALUES(''P001'',''ARGENTINA'');
INSERT INTO tb_pais VALUES(''P002'',''BRASIL'');
INSERT INTO tb_pais VALUES(''P003'',''PERU'');
INSERT INTO tb_pais VALUES(''P004'',''URUGUAY'');
'
LANGUAGE sql;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Trabajando con comillas:
Se ejecuta con SELECT insertaregistros2();
11. Trabajando con Tablas
CREATE FUNCTION listapais() RETURNS SETOF tb_pais
AS $$
SELECT * FROM tb_pais;
$$ LANGUAGE SQL;
SELECT lispais();
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Podemos crear una función que consulte los
registros de una tabla:
12. Trabajando con Tablas
CREATE FUNCTION buscapais(VARCHAR) RETURNS
SETOF tb_pais AS $$
SELECT * FROM tb_pais WHERE UPPER(pais_nom) LIKE
$1;
$$ LANGUAGE SQL;
SELECT buscapais('ARGENTINA');
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creamos una función que lista los países que
cumplen con determinado criterio
13. Trabajando con Tablas
CREATE FUNCTION buscapais(VARCHAR) RETURNS
SETOF tb_pais AS $$
SELECT * FROM tb_pais WHERE UPPER(pais_nom) LIKE
$1;
$$ LANGUAGE SQL;
SELECT buscapais('ARGENTINA');
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creamos una función que actualiza determinado
registro:
14. Trabajando con Tablas
CREATE OR REPLACE FUNCTION borrapais(VARCHAR)
RETURNS VOID
AS
'DELETE FROM tb_pais WHERE UPPER(pais_id) LIKE
$1;'
LANGUAGE 'sql';
SELECT borrapais('P004');
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creamos una función que elimina determinado
registro:
15. Trabajando con Tablas
CREATE OR REPLACE FUNCTION
updpais(VARCHAR,VARCHAR) RETURNS VOID
AS
'UPDATE tb_pais SET pais_nom = $2 WHERE
UPPER(pais_id) LIKE $1;'
LANGUAGE 'sql';
SELECT updpais('P003','COLOMBIA');
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creamos una función que actualiza determinado
registro:
16. Existen muchos más
comandos por aplicar…es
tu labor investigar…
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
17. Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creación de Funciones
Ing. Eddie Malca Vicente
emalca@gmail.com
@emalca