PROGRAMACIÓN POSTGRES.pdf

3
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.

Transcript of PROGRAMACIÓN POSTGRES.pdf

Page 1: PROGRAMACIÓN POSTGRES.pdf

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.

Page 2: PROGRAMACIÓN POSTGRES.pdf

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

Page 3: PROGRAMACIÓN POSTGRES.pdf

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