From: | Zac <zaccheob(at)inwind(dot)it> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | number of records returned by cursors |
Date: | 2005-06-27 10:20:40 |
Message-ID: | d9ojvj$27mm$1@news.hub.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi,
does anyone know if there is a way (in plpgsql) to obtain the number of
records returned by a cursor without fetching them all?
Using "FOUND" and "GET DIAGNOSTICS row_count" variables doesn't help me:
the only way seems to be fetching all the records.
I try to explain it better:
CREATE OR REPLACE FUNCTION test_cur() RETURNS void AS
$$
DECLARE
c CURSOR FOR SELECT 'foo' UNION SELECT 'bar';
i integer;
t text;
BEGIN
OPEN c;
RAISE INFO 'FOUND: %', FOUND;
GET DIAGNOSTICS i = row_count;
RAISE INFO 'row_count: %', i;
FETCH c INTO t;
RAISE INFO '1 row (of 2) fetched: %', t;
RAISE INFO 'FOUND: %', FOUND;
GET DIAGNOSTICS i = row_count;
RAISE INFO 'row_count: %', i;
FETCH c INTO t;
RAISE INFO '2 row (of 2) fetched: %', t;
RAISE INFO 'FOUND: %', FOUND;
GET DIAGNOSTICS i = row_count;
RAISE INFO 'row_count: %', i;
CLOSE c;
END;
$$ LANGUAGE plpgsql;
SELECT test_cur();
INFO: FOUND: f
INFO: row_count: 0
INFO: 1 row (of 2) fetched: bar
INFO: FOUND: t
INFO: row_count: 0
INFO: 2 row (of 2) fetched: foo
INFO: FOUND: t
INFO: row_count: 0
test_cur
----------
(1 row)
Thank you.
Zac
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas | 2005-06-27 10:43:35 | Re: automating backup ? |
Previous Message | Marco Colombo | 2005-06-27 10:18:23 | Re: Win32 users? |