Una vez instalado, crear una base de datos y realizar las siguientes funciones (realizar las tablas respectivas de acuerdo a la función):
--Recorrer la tabla productos y mostrar los nombres.
CREATE or replace FUNCTION
pro_funcion() RETURNS setof varchar AS $$
DECLARE
i record;
BEGIN
FOR i IN SELECT * FROM productos
LOOP
return
next i.prod_nombre || '---' || i.prod_precio;
END LOOP;
END;
$$ LANGUAGE plpgsql;
select * from pro_funcion()
________________________________________________
--Buscar en la tabla productos por el nombre
enviando un parámetro
CREATE OR REPLACE FUNCTION prod_funcion2(nom varchar)
RETURNS SETOF varchar AS $$ BEGIN
RETURN QUERY
SELECT prod_nombre FROM productos WHERE prod_nombre LIKE nom || '%'; END;
$$ LANGUAGE plpgsql;
SELECT prod_funcion2('C');
DROP FUNCTION prod_funcion2(nom
TEXT)
____________________________________________
--crear la tabla
CREATE or replace FUNCTION nuevosdatos() RETURNS TABLE(NOMBRE varchar, TOTAL real, FECHA timestamp) AS $$
DECLARE
i record;
BEGIN
drop table med;
create table med(id integer,nombre varchar,total real,fecha timestamp);
FOR i IN SELECT * FROM medicamentos LOOP
insert into med values(i.codigo,i.nombre,i.precio*i.cantidad,current_timestamp);
END LOOP;
return query select med.nombre,med.total,med.fecha from med;
END;
$$ LANGUAGE plpgsql;
--getpgusername()
--current_user
select * from nuevosdatos()
--ejemplo de asignar una consulta a una variable
create or replace function fn_categoria(id int) returns varchar as $$
declare
x varchar;
begin
x=(select cat_nombre from categorias where cat_id=id);
return x;
end;
$$ language plpgsql
select fn_categoria(5);
create or replace function fn_prod() returns int as $$
declare
x record;
prom decimal;
conta int;
begin
conta=0;
prom=(select avg(prod_precio) from productos);
for x in select * from productos loop
if x.prod_precio < prom then
update productos set prod_precio=prod_precio+2000 where prod_id=x.prod_id;
conta=conta+1;
end if;
end loop;
return conta;
end;
$$ language plpgsql
select fn_prod();
No hay comentarios.:
Publicar un comentario