[UPHPU] Postgres Function

Dave Long long.dave at gmail.com
Fri Jun 9 20:18:17 MDT 2006


I have the following Postgres resultset that returns an empty
resultset when trying to call it as "SELECT * FROM maxServices('rat');

Here is the function:

CREATE OR REPLACE FUNCTION maxServices(char) RETURNS SETOF holder AS $$
DECLARE
     r holder%rowtype;
BEGIN
     EXECUTE 'CREATE TEMPORARY TABLE maxservices (hostname
varchar(45), status int)';
     EXECUTE 'INSERT INTO maxservices (hostname,status) SELECT
hostname, max(status) FROM services GROUP BY hostname';
     FOR r IN
      SELECT memberships.hostname, h.ip_address, h.description,
h.status, h.plugin_output, maxservices.status AS serviceStatus
            FROM memberships, hosts AS h, maxservices
            WHERE memberships.hostname=h.hostname AND
maxservices.hostname=h.hostname AND memberships.customer = '$1'
            ORDER BY h.description
       LOOP
      RETURN NEXT r;
     END LOOP;
     EXECUTE 'DROP TABLE maxservices';
     RETURN;
END
$$
LANGUAGE plpgsql;

and here is the data type holder:

CREATE TYPE holder AS (hostname varchar, ip_address varchar,
description varchar, status smallint, plugin_output varchar,
serviceStatus smallint);

What am I doing wrong to make this return an empty result set.  I
verified that the select statement in the function worked as expected.
 And yes, there is data in the tables.
-- 
Dave Long
long.dave at gmail.com


More information about the UPHPU mailing list