> How you generate the results is up to you. when you have them you > either use RETURN NEXT or RETURN QUERY to return them to the caller. Now I get the reply ERROR: set-valued function called in context that cannot accept a set CONTEXT: PL/pgSQL function "actionlist" line 11 at return next and here is the function (and a datatype that is used for the return values) CREATE TYPE Ttelnr_action AS ( nr VARCHAR(30), action CHAR(1) ); CREATE OR REPLACE FUNCTION actionlist(tid_ TIMESTAMP) RETURNS SETOF Ttelnr_action AS $$ DECLARE rec RECORD; result Ttelnr_action; BEGIN FOR rec IN SELECT DISTINCT custid,nr,action FROM Actions LOOP IF rec.action = 'view_important_message' THEN result.nr := rec.nr; result.action := 'd'; RETURN NEXT result; ELSIF rec.action = 'download_movie' THEN result.nr := rec.nr; result.action := 'v'; RETURN NEXT result; END IF; END LOOP; RETURN; END; $$ LANGUAGE plpgsql;