Function Problem - Mailing list pgsql-novice

From Sharon Cowling
Subject Function Problem
Date
Msg-id 200201300142.g0U1gFt16798@lambton.sslnz.com
Whole thread Raw
Responses Re: Function Problem  (Torbjörn Andersson <tobbe@embryo.se>)
List pgsql-novice
I have a problem with a function I am creating:

CREATE FUNCTION overdue_key() returns int as '
BEGIN
UPDATE faps_key SET
status = ''Overdue''
WHERE (select key_code from faps_key
where date_key_due > current_date);
RETURN 1;
END;'
LANGUAGE 'plpgsql';

user=> select overdue_key();
ERROR:  WHERE clause must return type bool, not type varchar

I understand the error message, but I am unsure as to how to go about achieving my desired results.
I know how to do this using cursors inside a stored procedure in Oracle, but I understand that I cannot use cursors
insidea function in Postgres in the version I am using: 7.1.3 

If a key is overdue - (the date_key_due > current_date) then I want to update the status of each over due key to
'Overdue'

Example of faps_table:

user=> select key_code, permit_id, date_key_issued, date_key_due, status from faps_key;
 key_code | permit_id | date_key_issued | date_key_due |  status
----------+-----------+-----------------+--------------+-----------
 B4       |           |                 |              | Available
 A13      |           |                 |              | Available
 B1       |           |                 |              | Available
 A11      |      1141 | 29/01/2002      | 02/02/2002   | Issued
 A14      |      1145 | 29/01/2002      | 12/02/2002   | Issued
 A12      |      1146 | 29/01/2002      | 02/02/2002   | Issued
 B2       |      1147 | 29/01/2002      | 03/02/2002   | Issued
 B3       |           |                 |              | Available
 B5       |      1148 | 29/01/2002      | 01/02/2002   | Issued
 A15      |      1149 | 29/01/2002      | 30/01/2002   | Issued

List of current overdue keys, they have a status of issued, when function is run I want to update the status to
'Overdue'

user=> select key_code, permit_id, status from faps_key where date_key_due > current_date;
 key_code | permit_id | status
----------+-----------+--------
 A11      |      1141 | Issued
 A14      |      1145 | Issued
 A12      |      1146 | Issued
 B2       |      1147 | Issued
 B5       |      1148 | Issued
(5 rows)

Any ideas, pointers, documentation?!

Regards,

Sharon Cowling


pgsql-novice by date:

Previous
From: Frank Bax
Date:
Subject: Re: text field
Next
From: Oliver Elphick
Date:
Subject: Re: [Fwd: Re: pgaccess connection problems]