Например, в теле ХП использование неявного курсора может выглядеть следующим образом:
DECLARE LAccountCD VARCHAR(6); DECLARE LFio VARCHAR(20); DECLARE LPayDate DATE; DECLARE LPaySum NUMERIC(15,2); BEGIN
FOR SELECT A. AccountCD, A.Fio, P. PayDate, P. PaySum FROM Abonent A, PaySumma P
WHERE A. AccountCD = P. AccountCD AND P. PaySum > 70 INTO :LAccountCD, :LFio, :LPayDate, :LPaySum DO
SUSPEND; END. Следует отметить важную особенность работы с курсорами. Они позволяют обеспечить обновление или удаление строки, на которой в данный момент установлен курсор, с помощью конструкции WHERE CURRENT OF в запросе UPDATE или DELETE. В этом случае <группа_операторов> при обновлении строки, на которой установлен курсор, должна выглядеть следующим образом: UPDATE базовая_таблица SET … WHERE CURRENT OF имя_курсора;.
При удалении строки, на которой установлен курсор, <группа_операторов> должна выглядеть следующим образом:
DELETE FROM базовая_таблица
WHERE CURRENT OF имя_курсора;.
За одну операцию обновления могут быть изменены несколько столбцов текущей строки курсора, но все они должны принадлежать одной таблице. Если выполняется удаление, то будет удалена строка, установленная текущей в курсоре.
предыдущаяследующая