Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Ejemplos de PL/pgSQL Base de Datos 2.016 -- Función que calcula la longitud de un texto CREATE OR REPLACE FUNCTION cal_longitud(text) RETURNS integer AS ' DECLARE intext ALIAS FOR $1; --primer parametro resultado int4; BEGIN resultado := (SELECT LENGTH(intext)); RETURN resultado; END; ' LANGUAGE 'plpgsql'; ----------------------------------------------------------------------------------------------------------------------------- ------------------ -- Función que devuelve un texto CREATE OR REPLACE FUNCTION mi_funcion () RETURNS text AS ' DECLARE mi_texto text; --variables BEGIN mi_texto := ''jose''; --comandos RETURN mi_texto; END; ' LANGUAGE 'plpgsql'; ----------------------------------------------------------------------------------------------------------------------------- ------------------ -- Función que reciben dos parámetros, los multiplica y le suma una constante 100 CREATE OR REPLACE FUNCTION ejemplo_txt(integer, integer) RETURNS text AS $$ DECLARE numero1 ALIAS FOR $1; numero2 ALIAS FOR $2; constante CONSTANT integer := 100; resultado INTEGER; resultado_txt TEXT DEFAULT 'El resultado es 104'; BEGIN resultado := (numero1 * numero2) + constante; IF resultado <> 104 THEN resultado_txt := 'El resultado NO es 104'; END IF; RETURN resultado_txt; END; $$ LANGUAGE plpgsql; -------------------------------------------------------------------------------------------------------------------------- --------------------- -- Función que compara un número con 100 y muestra la salida por pantalla de dicha comparación CREATE OR REPLACE FUNCTION compara100(int4) RETURNS text AS ' DECLARE numero ALIAS FOR $1; BEGIN IF (numero <=100) THEN RAISE EXCEPTION ''Menor o igual a 100''; ELSE RAISE EXCEPTION ''Mayor 100''; END IF; RETURN ''fin''; END ' LANGUAGE 'plpgsql'; ----------------------------------------------------------------------------------------------------------------------------- ------------------ select compara100(500); -- Función que carga un cursor create or replace function mipruebacursor() returns integer as 'declare countNumber integer; myCursor cursor for SELECT count(*) FROM viaje; begin open myCursor; FETCH myCursor into countNumber; close myCursor; return countNumber; end; ' language plpgsql; ----------------------------------------------------------------------------------------------------------------------------------------------- -- Crear un trigger que avise cuando se inserte el registro nro.3 en la tabla viaje, evitando que se grabe el mismo CREATE OR REPLACE FUNCTION devolver_destinonombre() RETURNS TRIGGER AS $trigger_aviso$ BEGIN IF NEW.codigo = 3 THEN RAISE EXCEPTION 'No puede insertar el registro número 3'; END IF; END; $trigger_aviso$ LANGUAGE plpgsql; CREATE TRIGGER trigger_aviso BEFORE INSERT OR UPDATE ON viaje FOR EACH ROW EXECUTE PROCEDURE devolver_destinonombre(); http://www.postgresql.org.es/node/297 (procedimientos almacenados) http://www.postgresql.org.es/node/301 (triggers) http://www.postgresql.org.es/node/244 (triggers) http://www.postgresql.org.es/node/301
Compartir