Вы находитесь на странице: 1из 9

CREATE OR REPLACE FUNCTION calcula_porcentaje(valor integer, porcentaje integer) RETURNS integer AS $$ declare vport integer; BEGIN vport=((valor * porcentaje)

/ 100); RETURN vport; END; $$ LANGUAGE plpgsql; select * from calcula_porcentaje(5000,10); CREATE OR REPLACE FUNCTION calcula_porcentaje2(valor integer, porcentaje integer ) RETURNS integer AS $$ BEGIN RETURN ((valor * porcentaje) / 100) ; END; $$ LANGUAGE plpgsql; select * from calcula_porcentaje2(5000,10); CREATE OR REPLACE FUNCTION calcula_porcentaje3(integer,integer) RETURNS integer AS $$ BEGIN RETURN (($1 * $2) / 100) ; END; $$ LANGUAGE plpgsql; select * from calcula_porcentaje3(5000,10); --sp que suma dos valores CREATE OR REPLACE FUNCTION sp_suma(valor1 numeric,valor2 numeric) RETURNS numeri c AS $$ declare vresultado numeric; BEGIN vresultado=valor1 + valor2; --guarda la suma en una variable RETURN vresultado; --retorna el valor de vresultado END; $$ LANGUAGE plpgsql; --uso del sp_suma select * from sp_suma(200,10) --practica de if y case CREATE OR REPLACE FUNCTION sumaresta(valor1 numeric,valor2 numeric,operacion int eger)

RETURNS numeric AS $$ declare resultado numeric; BEGIN if operacion=1 then resultado=valor1+valor2; end if; if operacion=2 then resultado=valor1-valor2; end if; RETURN resultado; END; $$ LANGUAGE plpgsql; select * from sumaresta(100,10,1) CREATE OR REPLACE FUNCTION sumaresta2(valor1 numeric,valor2 numeric,operacion ch aracter varying) RETURNS numeric AS $$ declare resultado numeric; BEGIN if operacion='S' then resultado=valor1+valor2; end if; if operacion='R' then resultado=valor1-valor2; end if; RETURN resultado; END; $$ LANGUAGE plpgsql; select * from sumaresta2(100,10,'R') CREATE OR REPLACE FUNCTION sumaresta3(numeric,numeric,character varying) RETURNS numeric AS $$ declare resultado numeric; BEGIN if $3='S' then resultado=$1+$2; end if; if $3='R' then resultado=$1-$2; end if; RETURN resultado; END; $$ LANGUAGE plpgsql; select * from sumaresta3(100,10,'R') CREATE OR REPLACE FUNCTION calcular_cargos() RETURNS numeric AS $$ BEGIN RETURN (select Coalesce(max(car_codigo),0)+1 as ultimo from cargos); END;

$$ LANGUAGE plpgsql; select * from calcular_cargos(); CREATE OR REPLACE FUNCTION calcular_cargos2() RETURNS numeric AS $$ declare ultimo integer; BEGIN select Coalesce(max(car_codigo),0)+1 into ultimo from public.cargos; RETURN ultimo; END; $$ LANGUAGE plpgsql; select * from calcular_cargos2(); CREATE OR REPLACE FUNCTION sp_concargos() RETURNS setof record AS $$ declare recordSalida record; BEGIN for recordSalida in select * from public.cargos LOOP RETURN next recordSalida; END LOOP; return; END; $$ LANGUAGE plpgsql; select * from sp_concargos() as(codigo numeric,descripcion character varying)

CREATE OR REPLACE FUNCTION sp_concargos3() RETURNS setof record AS $$ BEGIN return query select * from public.cargos ; END; $$ LANGUAGE plpgsql; select * from sp_concargos3() as(codigo numeric,descripcion character varying); CREATE OR REPLACE FUNCTION sp_concargos2(cod numeric) RETURNS setof record AS $$ declare recordSalida record; BEGIN for recordSalida in select * from public.cargos where car_codigo= cod LOOP RETURN next recordSalida; END LOOP; return; END; $$ LANGUAGE plpgsql;

select * from sp_concargos2(1) as(codigo numeric,descripcion character varying);

CREATE OR REPLACE FUNCTION sp_concargos33(codi numeric) RETURNS setof record AS $$ BEGIN return query select * from public.cargos where car_codigo=codi; END; $$ LANGUAGE plpgsql; select * from sp_concargos33(1) as(codigo numeric,descripcion character varying) ; -- Realizar una funcion para insertar datos en la tabla cargos. CREATE OR REPLACE FUNCTION sp_insertcarg(descri character varying) RETURNS void AS $$ declare codig numeric; BEGIN select coalesce(max(car_codigo),0)+1 into codig from cargos; insert into cargos(car_codigo,car_descri)values(codig,descri); return; END; $$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION sp_insertcarg2(descri character varying) RETURNS void AS $$ BEGIN insert into cargos(car_codigo,car_descri) values((select coalesce(max(car_codigo),0)+1 from cargos),descri); return; END; $$ LANGUAGE plpgsql; ----------------------CREATE OR REPLACE FUNCTION sp_insertview(descri character varying) RETURNS setof record AS $$ declare codig numeric; BEGIN insert into cargos(car_codigo,car_descri) values((select coalesce(max(car_codigo),0)+1 from cargos),descri); return query

select * from cargos END; $$ LANGUAGE plpgsql; select * from sp_insertcarg2('cajero') select * from sp_insertcarg('limpiador') -- Realizar una funcion para modificar datos de la tabla cargos. CREATE OR REPLACE FUNCTION sp_updacargos (carcodigo numeric, cardescri character varying) RETURNS void AS $BODY$ BEGIN update cargos set car_descri=cardescri where carcodigo = car_codigo; return; END; $BODY$ LANGUAGE plpgsql; select * from sp_updacargos (1,'cajera'); select * from cargos --------------------------------------------------------------------------------------------- Realizar una funcion para eliminar datos de la tabla cargos.--------------------------------------------------------------------------------------------CREATE OR REPLACE FUNCTION sp_delecargos (carcodigo numeric) RETURNS void AS $BODY$ BEGIN delete from cargos where carcodigo = car_codigo; return; END; $BODY$ LANGUAGE plpgsql; select * from sp_delecargos (5); --------------------------------------------------------------------------------------------------------------------------------- Realizar una funcion que permita consultar datos de la tabla por rangos de co digos--------------------------------------------------------------------------------------------------------------------------------CREATE OR REPLACE FUNCTION sp_consucargos2(desde numeric,hasta numeric ) RETURNS setof record AS $BODY$ BEGIN

return query select * from cargos where car_codigo >= desde and car_codigo <= hasta ; END; $BODY$ LANGUAGE plpgsql; select * from sp_consucargos2(1,2) as (codigo numeric,descripcion character vary ing); ------------------------------------------------------------------------------------------------------------------------------------------ Realizar una sola funcion que permita insertar,modificar y borrar datos de la tabla cargos.-----------------------------------------------------------------------------------------------------------------------------------------create or replace function so_abmcargos(carcodigo numeric, cardescri character v arying ,operacion character varying) returns void as $BODY$ declare vcodi numeric; begin if operacion = 'insert' then select coalesce(max(car_codigo),0)+1 into vcodi from cargos; insert into cargos (car_codigo,car_descri) values (vcodi,cardesc ri); end if ; if operacion='update' then update cargos set car_descri=cardescri where car_codigo = carcod igo; end if; if operacion='delete' then delete from cargos where car_codigo = carcodigo; end if; return; end; $BODY$ LANGUAGE plpgsql; select * from so_abmcargos(1,'ricardo','insert') select * from so_abmcargos(2,'ricar','update') select * from so_abmcargos(5,'ricardo','delete') -------------------------------------------------------------------------------------------------------------------------------------------- Realizar las funciones para insertar modificar ,borrar y consultar datos de l as demas tablas-------------------------------------------------------------------------------------------------------------------------------------------CREATE OR REPLACE FUNCTION abm_cargos2(cod integer, descri character varying, o peracion character varying) RETURNS SETOF record AS $BODY$ declare resultado record;

vcod numeric; begin if operacion = 'insert' then select coalesce(max(car_codigo),0)+1 into vcod f rom cargos; insert into cargos(car_codigo,car_descrip) values(vcod, descri); return query select * from cargos where car_codigo = vcod; end if; if operacion = 'update' then update cargos set car_descrip = descri where car_codigo = cod; return query select * from cargos where car_codigo = cod; end if; if operacion = 'delete' then delete from cargos where car_codigo = cod; end if; end $BODY$ LANGUAGE plpgsql -------------------------------------------------------------------------------------------------------------------------------------------- Realizar las funciones para insertar modificar ,borrar y consultar datos de l as demas tablas-------------------------------------------------------------------------------------------------------------------------------------------CREATE OR REPLACE FUNCTION abm_cargos(cod integer, descri character varying, op eracion character varying) RETURNS SETOF record AS $BODY$ declare resultado record; vcod numeric; begin if operacion = 'insert' then select coalesce(max(car_codigo),0)+1 into vcod f rom cargos; insert into cargos(car_codigo,car_descrip) values(vcod, descri); for resultado in select * from cargos where car_codigo = vcod loop return next resultado; end loop; end if;

if operacion = 'update' then update cargos set car_descrip = descri where car_codigo = cod; for resultado in select * from cargos where car_codigo = cod loop return next resultado; end loop; end if; if operacion = 'delete' then delete from cargos where car_codigo = cod; end if; end $BODY$ LANGUAGE plpgsql ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CREATE OR REPLACE FUNCTION abm_cargos2(marcad integer, mardescrip character vary ing, operacion character varying) RETURNS SETOF void AS $BODY$ declare codigo numeric begin if operacion = 'insert' then else performen mar_descrip from marca where mar_descri =mardescrip ; if foud then raise exeption 'ya existe' else select coalesce(max(mar_codigo),0)+1 into codigo from marcas; insert into marca(car_cod,mar_descrip) values (c odigo, mardescri); end if; if operacion = 'update' then update marca set mar_descrip = descri where car _codigo = marcod endif if operacion = 'delete' then performen mar_cod from marca where mar_cod =marcod ; if foud then delete from marca where mar_codigo = marcod; else raise exeption 'NO EXISTE'; end if ; endif

--------------------------------------------------------------------------------------------------------------------------------------------create type referenciales (codigo numeric, nombre character ) ----buscar create or replace funtion repmarca ( ) returns setof referenciales as $body$ begin return query select * from marca ; end; $body$ LANGUAGE plpgsql *select * from repmarca(); *select * from repmarca() AS (cod_marca, mardescri) where cod_marca=33; ---------------------------------------------------------------------------------------------------------------------------------------------

Вам также может понравиться