The word I often use with Oracle is "lazy". Not in a bad way, but for example, if I had psuedo-code like:
open cursor;
if today is tuesday then
fetch from cursor;
end if;
then if I was the database, I would not perform the open command until I actually had to do the first fetch, because it is a waste of time.
But if the code was ever so slightly different, eg
open cursor which has a select-for-update
if today is tuesday then
fetch from cursor;
end if;
then it doesn't matter if it is tuesday or any other day, I would *have* to open that cursor immediately because it has an impact on other sessions (ie, it locks some rows).
So typically you'll often see that the database (in many many areas) will avoid doing work unless it absolutely has to. For cursors, in most cases, we will not actually process the "open" command until we hit the first fetch call.