I've mainly worked with Oracle in the past, so I need your help with this:
I'm creating the code for web based reports for a client. I need to recieve
parameters
and return a resultset.
For example I need to recieve the start date and the end date, select all
rows that match those
dates and output them. This is the code I have written that does not work.
I've been trying various ways of doing this:
CREATE FUNCTION my_test(DATE,DATE) RETURNS setof record AS '
DECLARE
v_permit_from ALIAS FOR $1;
v_permit_to ALIAS FOR $2;
rs record;
BEGIN
SELECT INTO rs t.permit_id, t.date_from, t.date_to, p.person_id,
p.firstname, p.lastname
FROM permit t, person p
WHERE t.person_id = p.person_id
AND t.date_from = v_permit_from
AND t.date_to = v_permit_to
ORDER BY t.issue_date, t.date_from;
return rs;
END;
' LANGUAGE 'plpgsql'
Message when I run code above:
NOTICE: ProcedureCreate: return type 'record' is only a shell
CREATE
user=> select my_test('25/10/2001','08/11/2001');
ERROR: fmgr_info: function 0: cache lookup failed
I'm pretty sure that I cannot use the return type of record, but when I try
text I get no
notice when it is created but the following:
taupo=> select my_test('25/10/2001','08/11/2001');
ERROR: Attribute 'rs' not found
I have researched both setof and PERFORM SELECT but I can't seem to find
anymore than a couple of
lines which don't help me. I notice that when you use setof you can return
a table or a row, but
I cannot find anything on returning a resultset.
Your help and ideas will be most appreciated.
Sharon Cowling