Advertisement
LovelessIsma

Porcentaje Participación CINADSAC

Mar 23rd, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Function: pa_porcentaje_participacion(character varying, character varying, numeric)
  2.  
  3. -- DROP FUNCTION pa_porcentaje_participacion(character varying, character varying, numeric);
  4.  
  5. CREATE OR REPLACE FUNCTION pa_porcentaje_participacion(IN idpropiedad character varying, IN idproyecto character varying, IN areaproyecto numeric, OUT porcentaje text)
  6.   RETURNS text AS
  7. $BODY$
  8.  
  9. DECLARE
  10.  
  11.   rPropiedad record;
  12.  
  13.   areapropiedad numeric;
  14.  
  15.   sumaarearelacionada numeric;
  16.  
  17. BEGIN
  18.  
  19. FOR rPropiedad IN SELECT a.tm_idpropiedad, a.tm_area, a.tm_area_sintechar, a.tm_area_techada, a.ta_clasepropiedad FROM tm_propiedad AS a WHERE a.tm_idproyecto = idproyecto AND a.tm_idpropiedad = idpropiedad AND a.activo = 1 LOOP
  20.  
  21.     IF rPropiedad.ta_clasepropiedad = '01' THEN
  22.  
  23.         areapropiedad := rPropiedad.tm_area_techada + (rPropiedad.tm_area_sintechar*0.5);
  24.  
  25.     ELSE
  26.  
  27.         areapropiedad := rPropiedad.tm_area;
  28.  
  29.     END IF;
  30.  
  31.   SELECT SUM(a.tm_area) INTO sumaarearelacionada FROM tm_propiedad AS a WHERE tm_idpropiedadrelacionada = rPropiedad.tm_idpropiedad AND a.tm_idtipopropiedad <> 'DPT' AND a.activo = 1;
  32.  
  33. END LOOP;
  34.  
  35.   IF sumaarearelacionada >  0 THEN
  36.  
  37.     areapropiedad = areapropiedad + sumaarearelacionada;
  38.  
  39.   END IF;
  40.  
  41.   porcentaje = to_char(areapropiedad/areaproyecto*100,'99999999.99999');
  42.  
  43.   porcentaje = trim(porcentaje);
  44.  
  45. END;
  46.  
  47. $BODY$
  48.   LANGUAGE plpgsql VOLATILE
  49.   COST 100;
  50. ALTER FUNCTION pa_porcentaje_participacion(character varying, character varying, numeric)
  51.   OWNER TO postgres;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement