"TableName" character(45) NOT NULL, "Operation" char(1) NOT NULL, "OldValue" text, "NewValue" text, "UpdateDate" timestamp without time zone NOT NULL, "UserName" character(45) NOT NULL, CONSTRAINT pk_audit PRIMARY KEY (pk_audit)) WITH (OIDS=FALSE); ALTER TABLE tbl_audit OWNER TO postgres; CREATE OR REPLACE FUNCTION fn_log_audit() RETURNS trigger AS $$ BEGIN IF (TG_OP = 'DELETE') THEN INSERT INTO tbl_audit ("TableName", "Operation", "OldValue", "NewValue", "Up dateDate", "UserName") VALUES (TG_TABLE_NAME, 'D', OLD, NULL, now(), USER); RETURN OLD; ELSIF (TG_OP = 'UPDATE') THEN INSERT INTO tbl_audit ("TableName", "Operation", "OldValue", "NewValue", "Up dateDate", "UserName") VALUES (TG_TABLE_NAME, 'U', OLD, NEW, now(), USER); RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO tbl_audit ("TableName", "Operation", "OldValue", "NewValue", "Up dateDate", "UserName") VALUES (TG_TABLE_NAME, 'I', NULL, NEW, now(), USER); RETURN NEW; END IF; RETURN NULL; END; $$ LANGUAGE 'plpgsql'; ALTER FUNCTION fn_log_audit() OWNER TO postgres; CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON articulo FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON cliente FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON control FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON detalle FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON empleado FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON factura FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE TRIGGER tbl_atributos_tg_audit AFTER INSERT OR UPDATE OR DELETE ON linea FOR EACH ROW EXECUTE PROCEDURE fn_log_audit(); CREATE OR REPLACE function Actualiza_descuentos(valor integer, modo integer) returns integer as $$ DECLARE -- Declaracion de variables locales newdscto integer :=0; BEGIN case modo when 1 then update articulo set descuento=tt.newdscto from (select idarticulo , descuento+valor as newdscto from articulo) tt where articulo.idarticulo=tt.idarticulo ; when 2 then update articulo set descuento=tt.newdscto from (select i darticulo, descuento-valor as newdscto from articulo) tt where articulo.idarticulo=tt.idarticulo ; else raise notice 'El valor de modo es 1 o 2'; end case; return 1; END $$ language plpgsql; Cursores create or replace function f_cursor() returns void as $$ DECLARE c_tabla1 refcursor; data record; begin open c_tabla1 for execute 'select * from linea'; loop fetch c_tabla1 into data; if not found then exit; end if; raise notice 'Nombre de Linea % :% ',data.idlinea, data.descripcion ; end loop; End; $$ LANGUAGE 'plpgsql';
create or replace function f_cursor1(x integer) returns void as
$$ DECLARE c_tabla1 refcursor; data record; begin open c_tabla1 for execute 'select * from linea'; loop fetch c_tabla1 into data; if not found then exit; end if; raise notice 'Nonbree Linea % :% Contador %',data.idlinea, data.descripcion ,data.contador+x ; end loop; End; $$ LANGUAGE 'plpgsql';
create or replace function f_cursor2() returns void as
$$ DECLARE c_tabla1 refcursor; data record; begin open c_tabla1 for execute 'select * from articulo'; loop fetch c_tabla1 into data
if not found then
exit; end if; raise notice 'Inventario de % es %',data.descripcion, data.preciocosto*data .stock; end loop; close c_tabla1; End; $$ LANGUAGE 'plpgsql';