Está en la página 1de 3

Universidad Autnoma Toms Fras Ingeniera Informtica

Laboratorio de Base de Datos INF-553


Docente.. Ing. Orlando Choque Ayma
Auxiliar. Univ. Reynaldo Henry Ruiz Cruz
FUNCIONES Postgres
Sintaxis bsica:
CREATE [OR REPLACE] FUNCTION nombre_funcion(tipo_par1,,tipo_parN)
RETURNS tipo_retorno
AS

DECLARE
var1 tipo_var1;
varN tipo_varN;
BEGIN
sentencias;
...
RETURN valor o variable de retorno;
END;

LANGUAGE tipo_lenguaje;





Asignacin:
variable := valor_variable; //asignacin

Sentencias repetitivas:
WHILE condicion LOOP //sentencia repetitiva WHILE
sentencias;
END LOOP;

Sentencias selectivas:
IF condicion THEN //sentencia selectiva IF
sentencias;
END IF;

EJEMPLOS:
1.- Realizar una funcin para calcular la suma de los N primeros nmeros.
postgres=# CREATE or replace FUNCTION sumar(int) returns int
postgres-# AS
postgres-# '
postgres'# DECLARE contador int;
postgres'# s int;
postgres'# BEGIN
postgres'# contador := 0;
postgres'# s := 0;
postgres'# WHILE contador < $1 LOOP
postgres'# contador := contador+1;
postgres'# s := s + contador;
postgres'# END LOOP;
postgres'# RETURN s;
postgres'# END;
postgres'# '
postgres-# LANGUAGE 'plpgsql';
CREATE FUNCTION


NOTA: Para utilizar las variables de los parmetros de la funcin se usa el nmero de posicin en la que se
encuentra precedido del smbolo $: para tipo_var1 seria $1,, para tipo_varN seria $N.
Universidad Autnoma Toms Fras Ingeniera Informtica
Laboratorio de Base de Datos INF-553
Docente.. Ing. Orlando Choque Ayma
Auxiliar. Univ. Reynaldo Henry Ruiz Cruz
Una vez creada la funcin la ejecutamos, para eso realizamos lo siguiente:

SELECT nombre_de_la_funcin(parametro1,, parametroN);

Para el ejemplo anterior seria:
postgres=# select sumar(5);
sumar
-------
15
(1 fila)
postgres=# select sumar(4);
sumar
-------
10
(1 fila)

2.- Realizar una funcin para determinar si un estudiante es mayor de edad o no, dado el CI del estudiante, si la
edad es mayor a 17 es mayor de edad caso contrario no.

Para realizar esta funcin requerimos:
Crear tabla estudiante(ci, nombre, edad):

postgres=# create table estudiante(
postgres(# ci numeric(8) primary key,
postgres(# nombre varchar(50),
postgres(# edad int);
CREATE TABLE

Insertamos datos a la tabla:
postgres=# insert into estudiante values(10,'juan',25),(11,'pedro',17);
INSERT 0 2
postgres=# insert into estudiante values(12,'ana',18),(13,'luis',20);
INSERT 0 2

Verificando:
postgres=# select * from estudiante;
ci | nombre | edad
----+--------+------
10 | juan | 25
11 | pedro | 17
12 | ana | 18
13 | luis | 20
(4 filas)

La funcin seria de la siguiente manera:
postgres=# create or replace function mayor_menor(numeric) returns varchar(50)
postgres-# as '
postgres'# declare ed int;
postgres'# begin
postgres'# select edad into ed from estudiante where ci=$1;
postgres'# if ed >= 18 then
postgres'# return ES MAYOR DE EDAD;
postgres'# else
postgres'# return NO ES MAYOR DE EDAD;
postgres'# end if;
postgres'# end; '
postgres-# language 'plpgsql';
CREATE FUNCTION

Universidad Autnoma Toms Fras Ingeniera Informtica
Laboratorio de Base de Datos INF-553
Docente.. Ing. Orlando Choque Ayma
Auxiliar. Univ. Reynaldo Henry Ruiz Cruz
Para ejecutar la funcin con los datos anteriormente introducidos:

postgres=# select mayor_menor(10);
mayor_menor
------------------
ES MAYOR DE EDAD
(1 fila)


postgres=# select mayor_menor(11);
mayor_menor
---------------------
NO ES MAYOR DE EDAD
(1 fila)

Si por alguna razn tendramos que borrar una de nuestras funciones se hara de la siguiente manera:
DROP FUNCTION nombre_de_la_funcin(tipo_parametro1,,tipo_parametroN);

Si queremos borrar las funciones que creamos anteriormente seria:

postgres=# drop function sumar(int);
DROP FUNCTION

postgres=# drop function mayor_menor(numeric);
DROP FUNCTION