creación de funciones postgre sql
Post on 13-Jun-2015
2.836 Views
Preview:
DESCRIPTION
TRANSCRIPT
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creación de FuncionesIng. Eddie Malca Vicente
emalca@gmail.com
@emalca
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
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
Listar las funciones
SELECT pronameFROM pg_proc;
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
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.
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
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);
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.
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.
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();
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:
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
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:
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:
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:
Existen muchos más comandos por aplicar…es
tu labor investigar…
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Curso Básico de PostgreSQL – Ing. Eddie Malca Vicente
Creación de FuncionesIng. Eddie Malca Vicente
emalca@gmail.com
@emalca
top related