Every time you do a query Oracle internally uses a cursor to retrieve your data.
If you open lots of statement handles you will get a cursor for each one. It looks like you are doing the query inside a loop so it is opening a new cursor each time around for each query.
Generally to avoid this you should just prepare your query once outside the loop and close your statement handles after use. If you don't close your statement handle you will end up with a lot of open cursors hanging around
Of course if you have sys access you can also just raise the open cursor limit if you have the memory;).