Теория для лабораторной работы №5 - "PL/SQL – курсоры и хранимые процедуры", страница 3

Открытие курсора

При открытии курсора выполняется запрос и определяется активное множество, которое состоит из всех строк, которые удовлетворяют критерию поиска. Для курсоров, объявленных с клаузой FOR UPDATE, оператор OPEN также блокирует эти строки.

 

Синтаксис:

 

 

cursor_name

Имя ещё не открытого явного курсора.

input_parameter

Имя формального параметра курсора, на который обычно ссылаются в клаузе WHERE.

 

Пример оператора OPEN:

 

DECLARE

   CURSOR c1 IS SELECT ename, job FROM emp WHERE sal < 3000;

   ...

BEGIN

   OPEN c1;

 

Строки активного множества не получаются после выполнения оператора OPEN. Оператор FETCH получает строки.

Передача параметров

Оператор OPEN используется для передачи параметров курсору. Если не нужно использовать значения по умолчанию, каждому формальному параметру в объявлении курсора должен соответствовать фактический параметр в операторе OPEN. Например, для следующего объявления курсора

 

DECLARE

   emp_name emp.ename%TYPE;

   salary   emp.sal%TYPE;

   CURSOR c1 (name VARCHAR2, salary NUMBER) IS SELECT ...

 

любой из следующих операторов открывает курсор:

 

OPEN c1(emp_name, 3000);

 

OPEN c1('ATTLEY', 1500);

OPEN c1(emp_name, salary);

 

В последнем примере, когда идентификатор salary использовался в объявлении курсора, он ссылался на формальный параметр. Но, когда он используется в операторе OPEN, он ссылается на переменную PL/SQL. Для избежания путаницы нужно использовать уникальные идентификаторы.

Формальные параметры, объявленные с значением по умолчанию не нуждаются в соответствующем фактическом параметре. Им просто присваивается значение по умолчанию при выполнении оператора OPEN.