Thread: ECPG and Curors.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'm looking at the documentation for Postgresql in Chapter 30 and I'm checking out how to use FETCH INTO and CURSORs to loop through multiple results from a table. In the documentation they show something like EXEC SQL DECLARE foo CURSOR for select a,b,c from test_table do { EXEC SQL FETCH NEXT FROM foo INTO .... } while ( ... ); what I don't see is how to detect that I've fetched the last row from a query. Is there more complete doco on this process somewhere? - -- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Peter L. Berghold Peter@Berghold.Net "Those who fail to learn from history are condemned to repeat it." AIM: redcowdawg Yahoo IM: blue_cowdawg ICQ: 11455958 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) Comment: Using GnuPG with Red Hat - http://enigmail.mozdev.org iD8DBQFEji2QUM9/01RIhaARAqV6AJ43/F6y5sKbvY837dVwNL8ZPz0MxgCeIJlL 5Fo3FyR3e5Aup53s/z0UrxY= =RLxy -----END PGP SIGNATURE-----
Attachment
On Mon, Jun 12, 2006 at 11:14:24PM -0400, Peter L. Berghold wrote: > what I don't see is how to detect that I've fetched the last row from a > query. Is there more complete doco on this process somewhere? Just look for "exec sql whenever not found ..." Michael -- Michael Meskes Email: Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org) ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
On Mon, Jun 12, 2006 at 11:14:24PM -0400, Peter L. Berghold wrote: > what I don't see is how to detect that I've fetched the last row from a > query. Is there more complete doco on this process somewhere? You could either handle a NOT FOUND exception, or make use of SQLCODE or SQLSTATE like this... EXEC SQL DECLARE csr_fred CURSOR FOR SELECT.... EXEC SQL OPEN csr_fred; while (SQLCODE == 0) { EXEC SQL FETCH csr_fred INTO :jim, :sheila,... if (SQLCODE == 0) { .... body of row processing here .... } } EXEC SQL CLOSE csr_fred;