| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Karsten Hoffrath <khoffrath(at)khoffrath(dot)de> |
| Cc: | pgsql-novice(at)postgresql(dot)org |
| Subject: | Re: Problem with triggers and cursors |
| Date: | 2006-09-14 13:01:51 |
| Message-ID: | 27658.1158238911@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-novice |
Karsten Hoffrath <khoffrath(at)khoffrath(dot)de> writes:
> Is using a cursor the preferred way to fetch data from another table?
It's the hard way, not to mention that you've not got the syntax of OPEN
quite right.
Instead of
> DECLARE
> cSrvID CURSOR FOR SELECT * FROM v_systemparameter WHERE
> systemparameter = 'serverid';
> rSrvID RECORD;
> cRowID refcursor;
> rRowID RECORD;
> ...
> OPEN cSrvID;
> FETCH cSrvID INTO rSrvID;
> CLOSE cSrvID;
> OPEN cRowID CURSOR FOR SELECT nextval('seq_' || TG_RELNAME);
> FETCH cRowID INTO rRowID;
> CLOSE cRowID;
I'd just do
DECLARE
rSrvID RECORD;
rowID bigint; -- or integer, it's not clear which you want
...
SELECT * INTO rSrvID FROM v_systemparameter WHERE systemparameter = 'serverid';
rowID := nextval('seq_' || TG_RELNAME);
...
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Chris Browne | 2006-09-14 16:16:03 | Re: replication/synchronisation |
| Previous Message | roy simkes | 2006-09-14 09:48:45 | Re: replication/synchronisation |