Universidad Autónoma Tomás Frías – Ingeniería Informática Laboratorio de Base de Datos – INF-553
Docente.. Ing. Orlando Choque Ayma Auxiliar. Univ. Reynaldo Henry Ruiz Cruz
FUNCIONES Postgres Sintaxis básica:
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’;
Asignación:
variable := valor_variable; //asignación
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 función para calcular la suma de los N primeros números. 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 parámetros de la función se usa el número de posición en la que se encuentra precedido del símbolo $: para tipo_var1 seria $1,…, para tipo_varN seria $N.
Universidad Autónoma Tomás Frías – Ingeniería Informática Laboratorio de Base de Datos – INF-553
Docente.. Ing. Orlando Choque Ayma Auxiliar. Univ. Reynaldo Henry Ruiz Cruz
Una vez creada la función la ejecutamos, para eso realizamos lo siguiente:
SELECT nombre_de_la_función(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 función 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 función 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 función 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 Autónoma Tomás Frías – Ingeniería Informática Laboratorio de Base de Datos – INF-553
Docente.. Ing. Orlando Choque Ayma Auxiliar. Univ. Reynaldo Henry Ruiz Cruz
Para ejecutar la función 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 razón tendríamos que borrar una de nuestras funciones se haría de la siguiente manera: DROP FUNCTION nombre_de_la_función(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
Top Related