PL/SQL Курсоры. Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа.

Презентация:



Advertisements
Похожие презентации
PL/SQL Взаимодействие с СУБД. Специальные типы Имя_таблицы.имя_столбца%TYPE Имя_таблицы%ROWTYPE; Имя_курсора%ROWTYPE;
Advertisements

PL/SQL Курсоры в PL/SQL Неявные курсоры создаются PL/SQL неявно для всех команд DML и SELECT. Явные курсоры объявляются программистом, который присваивает.
Обработка запросов с использованием курсоров. Что такое курсор? Каждая команда SQL, выполняемая на сервере Oracle, имеет свой курсор. Два типа курсоров:
PL/SQL Программная конструкция ОписаниеСреда выполнения Анонимный блок Неименованный блок PL/SQL, вставленный в приложение или созданный интерактивно.
Обработка исключений Гудов А.М., Завозкин С.Ю
Динамический SQL (использование в Oracle). Виды предложений SQL МетодТип предложенияТребуемые вызовы пакета DBMS_SQL 1 Незапросные, нет базовых переменных,
«ИЗМЕНЕНИЕ ДАННЫХ В БД» Выполнил: студент 722 группы Специальности Информационные системы (по отрослям) Токарев Виктор.
PL/SQL Триггеры (INSERT, UPDATE, DELETE). Определение Три́ггер базы данных (англ. trigger) это хранимая процедура особого типа, которую пользователь не.
PL/SQL Введение 1. Типы данных Типы доступные SQL (в Oracle) BOOLEAN CHAR NUMBER RECORD TABLE.
Встроенный динамический SQL. Динамический SQL PL/SQL использует раннее связывание для выполнения операторов SQL. Следствием этого является то, что только.
Выражения унарные (унарный минус) арифметические (+, -, *, /) сравнения (, =, =, , LIKE, BETWEEN...) конкатенации (||) логические (NOT, AND, OR)
Основы SQL Запросы к базе данных. Что такое база данных SQL? SQL (Structured Query Language - «Структурированный язык запросов») - универсальный компьютерный.
МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ. Программная единица PL/SQL Именованные блоки Три основных категории Процедура Функция Пакет Хранятся в базе данных или обрабатываются.
Администрирование и безопасность MySQL. Создание и удаление пользователей Под учетной записью пользователя MySQL подразумевается строка в таблице user.
Базы данных Проектирование базы данных Выполнил: Волкова Н.М. гр. С-55 Руководитель: Шурупов Д.В.
Презентация на тему: Ключевое слово TOP n [PERCENT] [WITH TIES]
1 Лекция 6 Команды категории извлечения данных языка структурированных запросов SQL План лекции Выборка определенных столбцов таблицы Устранение избыточных.
Обработка ошибок. Общие сведения Что такое исключение? –Переменная в PL/SQL, возбуждаемая во время выполнения Как возникает исключение? –Возбуждается.
PL/SQL Триггер блок PL/SQL, выполняемый неявно каждый раз, когда происходит конкретное событие.
СУБД 5. SQL для выборки данных. 2 SELECT Обработка элементов оператора SELECT выполняется в следующей последовательности: FROM – определяются имена используемых.
Транксрипт:

PL/SQL Курсоры

Курсор – специальный элемент, связанный с SQL-оператором SELECT. Объявление курсора происходит в секции объявления базового блока. Работа с курсором – посредством команд OPEN, FETCH, CLOSE

Явные курсоры: объявление CURSOR имя_курсора [([параметр_1 [, параметр_2 …])] [RETURN спецификация_возврата] [IS оператор_select [FOR UPDATE [OF таблица_или_столбец_1 [, таблица_или столбец_2 …] ]]

Явные курсоры: объявление Параметры: Имя_переменной [IN] тип [ { := | DEFAULT } значие_по_умолчанию ]

Явные курсоры: объявление Параметры – могут использоваться в операторе SELECT Спецификация возврата – записи какого типа будут выбираться оператором SELECT Таблица_или_столбец – имя столбца, который предстоит обновить, или таблицы строки которой будут удалены или изменены

Явные курсоры: объявление Для привязки курсора к запросу SELECT можно указать конструкцию OPEN-FOR (в секции выполнения): OPEN {cursor_variable} FOR { select_statement };

Пример объявления курсора: 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;

Пример объявления курсора: 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;

Атрибуты курсора Имя_курсора%ISOPEN – открыт ли курсор Имя_курсора%ROWCOUNT – количество строк таблицы, возвращенных оператором SELECT Имя_курсора%FOUND – проверка, была ли успешной последняя попытка получения записи из курсора Имя_курсора%NOTFOUND – противоположный FOUND атрибут

Использование команд OPEN имя_курсора[([параметр_1 [, параметр_2 …])] FETCH имя_курсора INTO переменная_или_список_переменных; CLOSE имя_курсора

Курсорный цикл FOR FOR запись_курсора IN имя_курсора LOOP операторы; END LOOP;

Курсорный цикл LOOP FETCH c1 INTO my_record; EXIT WHEN c1%NOTFOUND; END LOOP;

Использование CURRENT OF Можно изменять и удалять ту строчку, таблица, на которой в данный момент позиционирован курсор: UPDATE … SET … WHERE CURRENT OF cursor_name; DELETE FROM … WHERE CURRENT OF cursor_name; ! Для этого нужно указать FOR UDPATE при создании курсора

Вопросы: Приведите пример выгодного использования курсоров в сравнении с только запросами SQL ?

Задания При помощи курсора вывести все записи таблицы persons в формате: -

Задания При помощи курсора вывести все записи таблицы persons с заданным диапазоном id (в параметрах курсора) в формате: -

Задания При помощи курсора удалить записи таблицы persons с заданным диапазоном id (в параметрах курсора).

Задания Вывести на экран информацию о таблицах, принадлежащих пользователю, а также об их атрибутах в виде: Table: Имя_таблицы Имя поля – тип поля … Подсказка: использовать USER_ALL_TABLES, USER_TAB_COLUMNS Информацию получить при помощи курсора!