В литературе [2] курсоры иногда называют рабочей областью SQL – оператора. Однако точнее его можно определить как указатель на текущую строку результирующего множества оператора (рабочей области). В интерфейсе ODBC смысл курсора именно такой. Для PL/SQL вполне может подойти и определение курсора как рабочей области SQL – оператора, поскольку в нем задание оператора непосредственным образом сопряжено с объявлением курсора.
Операторы select возвращающие одну строку обрабатываются СУБД автоматически, т. е. она сама создаёт курсор и считывает данные посредством него из результирующего вектора. Для обработки строк запроса, возвращающего несколько строк, приложение должно объявлять курсор явно, указав его имя, а затем ссылаться на него при обработке строк по очереди. При обработке строк следует иметь в виду, что курсор устанавливается перед первой строкой результирующего множества, сформированного СУБД по выполнении запроса и сохраненного на сервере БД. Следующий пример демонстрирует процедуру объявления курсоров в блоке объявлений программ PL/SQL.
declare
cursor part_cur is select * from parts;
cursor cust_cur (state_id char) is
select id, l_name, f_name, phone
from customers
where state=state_id;
Здесь part_cur – это простой курсор, соответствующий всем строкам и столбцам таблицы parts, cust_cur – пример параметризованного курсора с параметром state_id.
После объявления курсора программа PL/SQL может открывать и выбирать записи в курсоре для поочередной обработки конкретных строк информации баз данных.