Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемЖанна Каёхтина
1 PL/SQL Курсоры
2 Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа с курсором – посредством команд OPEN, FETCH, CLOSE
3 Явные курсоры: объявление CURSOR имя_курсора [([параметр_1 [, параметр_2 …])] [RETURN спецификация_возврата] [IS оператор_select [FOR UPDATE [OF таблица_или_столбец_1 [, таблица_или столбец_2 …] ]]
4 Явные курсоры: объявление Параметры: Имя_переменной [IN] тип [ { := | DEFAULT } значие_по_умолчанию ]
5 Явные курсоры: объявление Параметры – могут использоваться в операторе SELECT Спецификация возврата – записи какого типа будут выбираться оператором SELECT Таблица_или_столбец – имя столбца, который предстоит обновить, или таблицы строки которой будут удалены или изменены
6 Явные курсоры: объявление Для привязки курсора к запросу SELECT можно указать конструкцию OPEN-FOR (в секции выполнения): OPEN {cursor_variable} FOR { select_statement };
7 Пример объявления курсора: CURSOR person_cursor(id_start IN persons.id%TYPE, id_end IN persons.id%TYPE) IS SELECT * FROM persons WHERE id BETWEEN id_start AND id_end;
8 Пример объявления курсора: CURSOR person_cursor(id_start IN persons.id%TYPE, id_end IN persons.id%TYPE) RETURN persons%ROWTYPE IS SELECT * FROM persons WHERE id BETWEEN id_start AND id_end;
9 Атрибуты курсора Имя_курсора%ISOPEN – открыт ли курсор Имя_курсора%ROWCOUNT – количество строк таблицы, возвращенных оператором SELECT Имя_курсора%FOUND – проверка, была ли успешной последняя попытка получения записи из курсора Имя_курсора%NOTFOUND – противоположный FOUND атрибут
10 Использование команд OPEN имя_курсора[([параметр_1 [, параметр_2 …])] FETCH имя_курсора INTO переменная_или_список_переменных; CLOSE имя_курсора
11 Курсорный цикл FOR FOR запись_курсора IN имя_курсора LOOP операторы; END LOOP;
12 Курсорный цикл LOOP FETCH c1 INTO my_record; EXIT WHEN c1%NOTFOUND; END LOOP;
13 Использование CURRENT OF Можно изменять и удалять ту строчку, таблица, на которой в данный момент позиционирован курсор: UPDATE … SET … WHERE CURRENT OF cursor_name; DELETE FROM … WHERE CURRENT OF cursor_name; ! Для этого нужно указать FOR UDPATE при создании курсора
14 Вопросы: Приведите пример выгодного использования курсоров в сравнении с только запросами SQL ?
15 Задания При помощи курсора вывести все записи таблицы persons в формате: -
16 Задания При помощи курсора вывести все записи таблицы persons с заданным диапазоном id (в параметрах курсора) в формате: -
17 Задания При помощи курсора удалить записи таблицы persons с заданным диапазоном id (в параметрах курсора).
18 Задания Вывести на экран информацию о таблицах, принадлежащих пользователю, а также об их атрибутах в виде: Table: Имя_таблицы Имя поля – тип поля … Подсказка: использовать USER_ALL_TABLES, USER_TAB_COLUMNS Информацию получить при помощи курсора!
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.