Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Te



Vielen lieben Dank Euch beiden! Ohne Euch hätte ich wahrscheinlich
noch Stunden an diesem Problem gearbeitet!

Ich poste hier mal noch den funktionierenden Code, damit nachfolgende
Leute mit ähnlichen Probleme ein Codebeispiel haben bzw. finden.

Viele Grüsse
Thomas

<code>
CREATE OR REPLACE FUNCTION getSurfacing() RETURNS TRIGGER AS '

 DECLARE

   rows      FLOAT;
   rec       RECORD;

   nature    FLOAT;
   asphalt   FLOAT;
   undefined FLOAT;

 BEGIN

   IF (select count(*) from pg_tables where tablename=''htable'') THEN
     EXECUTE ''DROP TABLE '' || ''htable'';
   END IF;

   CREATE LOCAL TEMPORARY TABLE htable AS (
     SELECT s.name FROM hikeroute h, surfepm s
     WHERE s.the_geom && setSRID(box2d(h.the_geom)::box2d, 21781)
       AND h.id = NEW.id
       AND within(s.the_geom, h.the_geom)
   );

   EXECUTE ''SELECT count(*)  FROM htable'' INTO rows;

   EXECUTE ''SELECT count(*)  FROM htable WHERE name ~* '' || ''
''''Hartbelag'''' '' || '''' INTO asphalt;
   asphalt := (100/rows)*(asphalt);

   EXECUTE ''SELECT count(*)  FROM htable WHERE name ~* '' || ''
''''Naturbelag'''' '' || '''' INTO nature;
   nature  := (100/rows)*(nature);

   undefined := 100 - nature - asphalt;

   INSERT INTO roadsurfacing VALUES(NEW.gid, nature, asphalt, undefined);

   RETURN NEW;

   EXCEPTION
     WHEN division_by_zero THEN
       RAISE NOTICE ''caught division_by_zero !!'';
       RETURN OLD;

 END;

' LANGUAGE plpgsql;
</code>

--
Thomas Zuberbuehler
http://www.zubi.li


  • Follow-Ups:
    • Re: Te
      • From: Stefan Kaltenbrunner
    • Re: Te
      • From: Andreas Kretschmer

Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group