Problem solve Get help with specific problems with your technologies, process and projects.

Returning number of rows to a REF CURSOR

I was wondering if it is possible to get the number of rows returned to a REF CURSOR.

I believe Oracle is the only major database which uses the REF CURSOR type, so I will assume you are using Oracle. REF CURSORS are used in PL/SQL, Oracles procedural language, so I'll give you an example in a snippet of PL/SQL code.

Cursors in Oracle have attributes, such as %FOUND, %NOTFOUND, %ISOPEN, and %ROWCOUNT. When appended to the name of the cursor, they return useful information about its execution. %ROWCOUNT is the attribute that will give you the information you're looking for. Here is an example:

 declare type tWeakCursor is REF CURSOR; cMyCursor tWeakCursor; vTable_Name varchar2(30); begin open cMyCursor for 'select * from user_tables'; loop fetch cMyCursor into vTable_Name; exit when cMyCursor%notfound; dbms_output.put_line( to_char(cMyCursor%rowcount) || ') ' || vTable_Name ); end loop; close cMyCursor; end;

The %ROWCOUNT attribute returns the current row count of the cursor. After the cursor is opened, %ROWCOUNT is equal to zero. After every successful FETCH, ROWCOUNT is incremented by one.


For More Information

  • What do you think about this answer? E-mail the edtiors at editor@searchDatabase.com with your feedback.
  • The Best SQL Web Links: tips, tutorials, scripts, and more.
  • Have an SQL tip to offer your fellow DBAs and developers? The best tips submitted will receive a cool prize. Submit your tip today!
  • Ask your technical SQL questions -- or help out your peers by answering them -- in our live discussion forums.
  • Ask the Experts yourself: Our SQL, database design, Oracle, SQL Server, DB2, metadata, object-oriented and data warehousing gurus are waiting to answer your toughest questions.

This was last published in February 2002

Dig Deeper on Using Oracle PL-SQL



Find more PRO+ content and other member only offers, here.

Have a question for an expert?

Please add a title for your question

Get answers from a TechTarget expert on whatever's puzzling you.

You will be able to add details on the next page.

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.