Основы языка PL/SQL. Гаршина В.В - 41 стр.

UptoLike

Составители: 

41
CURSOR emp_cursor
(v_dept NUMBER, v_job VARCHAR2) IS
SELECT last_name, salary, start_date
FROM s_emp
WHERE dept_id=v_dept
AND title=v_job;
Циклы FOR с курсорами обрабатывают строки в явном курсоре. Это
сокращенная форма записи, поскольку происходит открытие курсора, вы-
борка строк по одной за каждое прохождение цикла и автоматическое за-
крытие курсора после того, как все строки обработаны. Синтаксис откры-
тия цикла FOR с курсором:
FOR record_name IN cursor_name LOOP
operator1;
operator2;
. . .
END LOOP;
где record_name – имя записи, cursor_name – имя курсора, operator1,
operator2... – операторы PL/SQL.
Пример использования цикла FOR с курсором:
FOR item_record IN item_cursor LOOP
v_order_total:=v_order_total +
(item_record.price*
item_record.quantity);
i:=i+1;
product_id_table(i):=
item_record.product_id;
order_total_table (i):=v_order_total;
END LOOP;
Прежде чем удалять или обновлять строки, вы можете пожелать их
заблокировать. Для этого в запрос, выполняемый в курсоре, включается
предложение FOR UPDATE. Не фиксируйте изменения между выборками
     CURSOR emp_cursor
     (v_dept NUMBER, v_job VARCHAR2) IS
     SELECT last_name, salary, start_date
     FROM s_emp
     WHERE dept_id=v_dept
     AND title=v_job;

      Циклы FOR с курсорами обрабатывают строки в явном курсоре. Это
сокращенная форма записи, поскольку происходит открытие курсора, вы-
борка строк по одной за каждое прохождение цикла и автоматическое за-
крытие курсора после того, как все строки обработаны. Синтаксис откры-
тия цикла FOR с курсором:

     FOR record_name IN cursor_name LOOP
         operator1;
         operator2;
      . . .
     END LOOP;

где record_name – имя записи, cursor_name – имя курсора, operator1,
operator2... – операторы PL/SQL.
      Пример использования цикла FOR с курсором:

     FOR item_record IN item_cursor LOOP
       v_order_total:=v_order_total +
               (item_record.price*
                item_record.quantity);
       i:=i+1;
       product_id_table(i):=
          item_record.product_id;
       order_total_table (i):=v_order_total;
     END LOOP;

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

                                    41