Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between explicit and implicit cursors in Oracle?

Tags:

oracle

plsql

I am a bit rusty on my cursor lingo in PL/SQL. Anyone know this?

like image 534
Brian G Avatar asked Sep 16 '08 16:09

Brian G


People also ask

What is implicit cursor in Oracle?

An implicit cursor has attributes that return information about the most recently run SELECT or DML statement that is not associated with a named cursor. Note: You can use cursor attributes only in procedural statements, not in SQL statements.

Which cursor is faster in Oracle?

The short answer is that implicit cursors are faster and result in much neater code so there are very few cases where you need to resort to explicit cursors.

What are the two types of cursors in PL SQL?

PL/SQL has two types of cursors: implicit cursors and explicit cursors.


1 Answers

An implicit cursor is one created "automatically" for you by Oracle when you execute a query. It is simpler to code, but suffers from

  • inefficiency (the ANSI standard specifies that it must fetch twice to check if there is more than one record)
  • vulnerability to data errors (if you ever get two rows, it raises a TOO_MANY_ROWS exception)

Example

SELECT col INTO var FROM table WHERE something; 

An explicit cursor is one you create yourself. It takes more code, but gives more control - for example, you can just open-fetch-close if you only want the first record and don't care if there are others.

Example

DECLARE      CURSOR cur IS SELECT col FROM table WHERE something;  BEGIN   OPEN cur;   FETCH cur INTO var;   CLOSE cur; END; 
like image 105
Sten Vesterli Avatar answered Sep 21 '22 01:09

Sten Vesterli