Beruflich Dokumente
Kultur Dokumente
Una función puede constar de varios bloques y estos pueden estar anidados
SINTAXIS EN PL/PGSQL
Comentarios
se usa (/*……*/) */
Variables
nombre_variable TIPO_DATO;
Ejemplo:
un_integer:= 10 * 10;
RETURN un_integer;
END;
'LANGUAGE 'plpgsql';
TIPOS DE VARIABLES
Ejemplos de variables:
id_usuario INTEGER;
cantidad NUMERIC(5,2);
url VARCHAR;
Todos los tipos de variable definidos para SQL son válidos en PL/pgSQL
EJEMPLO TRIVIAL PASANDO VARIABLES
Calculamos el tamaño de un a cadena
IF condiciones THEN
instrucciones;
END IF;
IF condiciones THEN
sentencias;
ELSE
sentencias;
END IF;
IF condiciones THEN
sentencias;
ELSE IF condiciones THEN
sentencias;
END IF;
EJEMPLO IF/ELSE
Programa que calcula la longitud de dos cadenas y devuelve la
longitud mayor.
CREATE OR REPLACE FUNCTION cadena_mas_larga(text, text) RETURNS int4 AS ‘
DECLARE
in_uno ALIAS FOR $1;
in_dos ALIAS FOR $2;
lon_uno int4;
lon_dos int4;
result int4;
BEGIN
lon_uno := (SELECT LENGTH(in_uno));
lon_dos := (SELECT LENGTH(in_dos));
IF lon_uno > lon_dos THEN RETURN lon_uno;
ELSE RETURN lon_dos;
END IF;
END;
'LANGUAGE 'plpgsql';
PL/PGSQL: ESTRUCTURAS DE CONTROL
Repetitivas:
WHILE condicion LOOP
instrucciones;
END LOOP;
Instrucciones;
END LOOP;
Referencia: http://www.postgresql.org/docs/9.1/static/plpgsql-control-structures.html
PL/PGSQL: MANEJO DE MENSAJES
Sintaxis:
3 niveles existentes:
referencia: http://www.postgresql.org.es/node/301
DESCRIPCIÓN DEL EJEMPLO
CREATE TABLE alumno_respaldo ( ci integer, nombre text, sexo char, telef varchar(10), colegio text, fecha date);
RETURNS trigger AS ‘
OLD.CI,
OLD.nombre,
OLD.sexo,
OLD.telef,
OLD.colegio,
now());
RETURN NULL;
END; ‘
LANGUAGE ‘plpgsql';
TRIGGER EJEMPLO