creación de funciones postgre sql
DESCRIPTION
Creación de Funciones de Usuario, curso básico de Postgresql - Eddie MalcaTRANSCRIPT
![Page 1: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/1.jpg)
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creación de FuncionesIng. Eddie Malca Vicente
@emalca
![Page 2: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/2.jpg)
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
![Page 3: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/3.jpg)
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
![Page 4: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/4.jpg)
Listar las funciones
SELECT pronameFROM pg_proc;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
![Page 5: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/5.jpg)
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.
![Page 6: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/6.jpg)
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
![Page 7: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/7.jpg)
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);
![Page 8: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/8.jpg)
Trabajando con Tablas
CREATE OR REPLACE FUNCTION creatabla() RETURNS VOIDAS
'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.
![Page 9: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/9.jpg)
Trabajando con Tablas
CREATE OR REPLACE FUNCTION insertaregistros() RETURNS VOIDAS$$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.
![Page 10: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/10.jpg)
Trabajando con Tablas
CREATE OR REPLACE FUNCTION insertaregistros2() RETURNS VOIDAS'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();
![Page 11: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/11.jpg)
Trabajando con Tablas
CREATE FUNCTION listapais() RETURNS SETOF tb_paisAS $$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:
![Page 12: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/12.jpg)
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
![Page 13: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/13.jpg)
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:
![Page 14: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/14.jpg)
Trabajando con Tablas
CREATE OR REPLACE FUNCTION borrapais(VARCHAR) RETURNS VOIDAS
'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:
![Page 15: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/15.jpg)
Trabajando con Tablas
CREATE OR REPLACE FUNCTION updpais(VARCHAR,VARCHAR) RETURNS VOIDAS
'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:
![Page 16: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/16.jpg)
Existen muchos más comandos por aplicar…es
tu labor investigar…
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
![Page 17: Creación de funciones postgre sql](https://reader033.vdocuments.co/reader033/viewer/2022042512/557b492ad8b42a014a8b4bd8/html5/thumbnails/17.jpg)
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creación de FuncionesIng. Eddie Malca Vicente
@emalca