Choices (b), (e), (f), and (i) are all valid cursor attributes. They return the following information:
Returns the number of rows processed by the cursor at that point (this number might reflect the number of rows fetched or the number of rows processed—that is, deleted, updated, or inserted).
Is a Boolean attribute that returns TRUE when a cursor is open.
Is a Boolean attribute that returns TRUE if the last fetch returned a row and FALSE if not.
Is a Boolean attribute that returns TRUE if the last fetch did not return a row and FALSE if it did.
For explicit cursors, they are specified as cursor name%attribute ; for example, CURS_GET_EMPS%FOUND. For implicit cursors, they are specified as SQL%attribute ; for example, SQL%NOTFOUND.
The usages are:
Invalid. It raises an INVALID_CURSOR exception, since the cursor has not been opened, and you are checking the FOUND attribute.
Invalid. You’re referencing the %ROWCOUNT attribute as though it were a Boolean expression. It is, in fact, a numeric attribute.
Invalid. You’re applying the attribute to a record instead of the cursor.
Invalid. You’re applying the attribute to the table name rather the “SQL” keyword, as is necessary with implicit attributes.
You are executing the CLOSE after the RETURN statement, so in fact that CLOSE statement is never run. It would therefore seem that your cursor would remain open and you would run out of open cursors in your session. That is not, however, ...