Logo Studenta

Ejemplos de PLpgSQL

¡Estudia con miles de materiales!

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

Continuar navegando