Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> explicitly closing cursors
Hi,
Version : Oracle 8.1.7.0.0
I'm running a batch application that basically performs a potentially high
number of SELECT queries (a minor proportion of UPDATEs as well), using the
OCI.
After some 300 statements get executed, I'm faced with the recurrent
ORA-01000 error message that says "maximum open cursors exceeded". I checked
my OCIHandleFree() calls, there's no mismatch, meaning they match the calls
to OCIHandleAllocate().
My understanding is that to close cursors, you have to
- either let go of the connection, which i don't want to do because it'd be
way too costly for me to open and close a connection on each request,
- or as it says in the online documentation "explicitly close any open
cursor during the execution of (my) program".
After some amount of searching through documentation, my question is : how on earth do I explicitly close an open cursor ? What leaves me somewhat perplexed is that i came across the following statement somewhere else in the online help : "Oracle 8i does not use cursors any more". Well my impression is that it jolly well does, if only to issue error messages related to their excessive number :-)
Anyway, this is probably a quite simple resource-freeing problem, yet it gives me a lot of hassle. I'd be muchly grateful if anyone could help.
G - Received on Tue Apr 13 2004 - 10:09:52 CDT