- •1.Основные понятия и определения курса. Традиционные файловые системы.
- •5 История развития субд Oracle.
- •6 Общие сведения об инструкциях sql. Правила именования таблиц и столбцов
- •7 Общие сведения о dml.
- •8 Общий синтаксис инструкции select
- •9 Предложения select и from. Предикаты и вычисляемые столбцы (пример).
- •10 Предложение where и классификация условий отбора (привести примеры).
- •11 Составные условия отбора. Влияние значений null на результат отбора.
- •12 Многотабличные запросы и их особенности (привести пример).
- •13 Операторы комбинирования результирующих таблиц в многотабличных запросах (привести примеры).
- •14 Предложение group by. Статистические (агрегативные) функции в sql (примеры).
- •15 Условия отбора групп (предложение having)
- •16 Сортировка результатов запроса (предложение order by).
- •17 Подзапросы: типы, примеры, правила и ограничения, ключевые слова any, all, exist, not exist
- •18 Добавление данных (инструкции insert, merge).
- •19 Модификация и удаление данных (инструкции update, merge и delete).
- •20 Общие сведения о ddl.
- •21 Типы данных sql.
- •22 Создание таблиц (инструкция create table).
- •23 Изменение определения и удаление таблицы (инструкции alter ,drop table).
- •24 Создание псевдонимов и индексов таблиц (инструкции create/drop alias, create/drop index)
- •25 Создание представлений (инструкция create view). Преимущества и недостатки использования, основные виды
- •26 Проблемы обновления и удаление представлений.
- •27 Принципы защиты данных в sql: аутентификация пользователей, защищаемые объекты, использование привилегий и другие возможности обеспечения безопасности
- •28 Аутентификация. Создание и изменение пользователей. Аутентификация пользователей
- •29 Профили. Создание, изменение, удаление.
- •30 Привилегии. Системные привилегии.
- •31 Привилегии доступа к объектам схемы. Правила предоставления привилегий
- •32 Предоставление и отмена привилегий (инструкция grant и revoke).
- •33 Работа с привилегиями при помощи ролей. Системные роли, определение, изменение, удаление ролей
- •34 Аудит. Типы и применение аудита.
- •Типы аудита. В диспетчере авторизации можно использовать два вида аудита: аудит времени выполнения и аудит изменения хранилища данных авторизации. Аудит времени выполнения
- •Аудит изменений хранилища данных авторизации
- •35 Условия целостности данных
- •36 Правила добавления и удаления. Проблемы ссылочных циклов
- •37 Понятие транзакций. Инструкции обработки транзакций (commit и rollback)
- •38 Модель транзакции в стандарте ansi/iso
- •39 Журнал транзакций. Проблемы обработки параллельных транзакций.
- •40 Блокировки транзакций: уровни и виды, тупиковые ситуации.
- •41 Преимущества pl/sql и общие сведения о структуре pl/sql программ
- •42 Классификация блоков pl/sql.
- •43 Управление блоками в sql*Plus.
- •44 Лексические единицы pl/sql
- •45 Синтаксис объявления переменных, инициализация.
- •46 Скалярные типы pl/sql.
- •48 Коллекции (составные типы pl/sql).
- •Методы, применяемые при работе с коллекциями
- •Инициализация коллекций
- •50 Массовое связывание.
- •51 Преобразование типов данных. Область действия и область видимости переменных. Выражения и операции.
- •52 Управляющие структуры pl/sql. Область действия счетчика цикла, ограничения безусловных переходов условное управление
- •Итерационное управление
- •53 Понятие транзакции и виды блокировок Oracle
- •54 Операторы управления транзакциями в Oracle (commit, rollback, savepoint, set transaction, lock table).
- •55 Многоверсионная модель согласованности Oracle.
- •56 Автономные транзакции. Понятие прагмы.
- •57 Записи pl/sql. Использование %rowtype
- •58 Курсорные типы, переменные и выражения. Виды и назначение курсоров.
- •59 Обработка явных и неявных курсоров.
- •61 Динамический sql: использование пакета dbms_sql.
- •62 Алгоритма обработки данных в dbms_sql
- •63 Встроенный динамический sql (nds). (операторы execute immediate, open … for).
- •65 Классификация и определение программных единиц. Общие ключевые слова.
- •66 Создание и использование процедур
- •Вызов процедур и функций
- •67 Создание и использование (вызов) функций.
- •Вызов процедур и функций
- •68 Структура и определение пакета.
- •69 Триггеры бд: виды и создание
- •70 Последовательность событий и предикаты триггеров.
- •71 Пакет dbms_output.
- •72 Пакет utl_file(файловый ввод/вывод)
- •Безопасность
- •73 Пакет dbms_pipe: посылка и получение сообщений
- •74 Пакет dbms_pipe: создание программных каналов и управление ими.
- •75 Архитектура odbc и коды возврата
- •76 Основной алгоритм программ odbc. Инициализация и завершение.
- •77 Выполнение операторов: функции управления каталогом.
- •78 Непосредственное и подготавливаемое выполнение.
- •79 Выборка результатов.
- •80 Подробный алгоритм использования odbc в прикладных программах.
57 Записи pl/sql. Использование %rowtype
ЗАПИСИ
Тип записи (record type) — это группа связанных полей, каждое из которых имеет свои собственные имя и тип данных. Тип записи обычно используется в программах PL/SQL для создания переменных, соответствующих всем столбцам таблицы или их подмножеству. Например, в следующем фрагменте программы тип записи, определяемый пользователем, объявляется для соответствия атрибутам таблицы базы данных, а затем с применением нового типа объявляется переменная.
declare
tуре part_record is record (id integer,
unit_price number(10,2),
description varchar2(200));
current_part part_record;
В программах PL/SQLудобно пользоваться атрибутом %ROWTYPEдля того, чтобы в процессе выполнения программы объявлять переменные, имеющие тип записи, и другие конструкции Например, в следующем фрагменте программы показано, как использование атрибута %ROWTYPEможет упростить объявление вложенной таблицыCURRENT_PARTS_TABLE.
declare
type parts_table is table of sales.parts %rowtype;
current_parts_table parts_table;
58 Курсорные типы, переменные и выражения. Виды и назначение курсоров.
Курсор - указатель на текущую строку результирующего множества оператора (рабочей области).
Для курсоров установлен ряд ограничений. К примеру, программа PL/SQL не может передавать курсор другой программе в качестве параметра – открывать курсор и обрабатывать соответствующую информацию можно только непосредственно в самой программе. Работая с курсором и учитывая его функциональные ограничения, можно объявлять в программе курсорные типы (cursor types), определяемые пользователями, и соответствующие курсорные переменные (cursor variables).
типы курсоров:
* Неявный,
* Явный
Неявные Курсоры
Неявный курсор управляется автоматически, прозрачно для Вас. В процессе выполнения, курсор открывается, из него выбираются данные и закрывается, все за один шаг. Неявные курсоры используются только в том случае, если надо возвратить единственную строку из таблицы.
Явные Курсоры
Явные курсоры используются, когда ожидается, что запрос может вернуть как ни одной, так и много строк. Он же позволяет выполнить сложные действия (логику) при выборке каждой строки. Управление явными курсорами осуществляет программист. Это означает, что Вы осуществляете открытие, извлечение данных и закрытие (OPEN, FETCH, CLOSE) курсора. При использовании явных курсоров можно выделить 4 основных этапа:
1. Объявление курсора. 2. Открытие (OPEN) курсора. 3. Извлечение (FETCH) данных из курсора один или более раз. 4. Закрытие (CLOSE) курсор
Также бывают: параметризированные и не параметризированные, строгие и нестрогие
Атрибуты Курсора
Курсоры имеют (4) атрибуты:
* FOUND Строка успешно извлечена? (TRUE/FALSE)
* NOTFOUND Строка не извлечена? (TRUE/FALSE)
* ISOPEN Курсор открыт? (TRUE/FALSE)
* ROWCOUNT Количество извлеченных строк
59 Обработка явных и неявных курсоров.
Для обработки явного курсора в PL/SQL необходимо выполнить четыре действия:
1. Объявить курсор.
2. Открыть курсор для запроса.
3. Выбрать результаты в переменные PL/SQL.
4. Закрыть курсор.
Объявление курсора является единственным действием, которое выполняется в разделе объявлений блока. Другие три действия производятся в выполняемом разделе или в разделе исключительных ситуаций.
Объявление курсора. При объявлении курсора ему назначается имя и ставится в соответствие некоторый оператор SELECT. Синтаксис объявления курсора: CURSORимя_курсора ISonepamop_SELECT
Открытие курсора. Курсор открывается следующим образом: OPENимя_курсора;
Когда курсор открывается, происходит следующее:
• Анализируются значения переменных привязки.
• На основе значений переменных привязки и содержимого таблиц,
к которым обращается запрос, определяется активный набор.
• Указатель активного набора устанавливается на первую строку.
Считывание строи из курсора. Предложение INTO запроса является частью оператора FETCH. Оператор FETCH имеет две формы:
FETCH имя_курсора INTOсписок_переменных;
FETCH имя._курсора INTOзanuсь PL/SQL;
Закрытие курсора. После того как весь активный набор выбран, курсор следует закрыть. Это сообщает PL/SQL, что программа закончила работу с курсором и отведенные для него ресурсы могут быть освобождены. В состав этих ресурсов, входит пространство для хранения активного набора, а также временное пространство, используемое для определения активного набора. Синтаксис закрытия курсора: CLOSEимя_курсора;
После закрытия курсора считывать из него строки нельзя.
Обработка неявных курсоров
Как говорилось в предыдущем разделе, явные курсоры используются для обработки тех операторов SELECT, которые возвращают более одной строки. Однако каждый оператор SQL выполняется в пределах контекстной области и поэтому имеет курсор, указывающий на конкретную контекстную область. Такой курсор называется SQL- курсором. В отличие от явных курсоров, SQL-курсор не открывается и не закрывается программой. PL/SQL неявно открывает SQL-курсор, обрабатывает SQL-оператор и затем закрывает этот курсор.
Неявные курсоры используются для обработки операторов INSERT, UPDATE, DELETE, а также однострочных операторов SELECT...INTO. SQL-курсор открывается и закрывается PL/SQL, поэтому команды OPEN, FETCH и CLOSE не нужны. Однако для SQL-курсоров можно применять курсорные атрибуты. Например, ниже приводится блок, в котором оператор INSERT выполняется в том случае, если оператору UPDATE не соответствует ни одной строки.
Курсорные циклы FOR
Курсорный цикл FOR - итеративная конструкция, которая позволяет использовать OPEN, FETCH, CLOSE курсор в пределах цикла. Он позволяет выполнять операции над каждой строкой, выбранной в цикле. Обычно он используется, когда Вы собираетесь обрабатывать каждую строку, которую он возвращает. Если Вам нужно прервать цикл преждевременно, используйте явные курсоры (с их большим управлением).
Использование SQL в PL/SQL. Понятие привязки.
Из всех SQL-операторов в программахPL/SQLнапрямую можно использовать лишь операторыDMLи операторы управления транзакциями. ОператорыDDL–использовать нельзя. Чтобы пояснить смысл этих ограничений, рассмотрим принципы создания программPL/SQL.
В любом языке программирования привязка переменных может быть либо ранней, либо поздней. Привязка(binding) переменной–это процесс указания области памяти, соответствующей некоторому идентификатору программы. ВPL/SQLв процесс привязки входит также проверка базы данных на наличие полномочий, позволяющих обращаться к объектам схем. В том языке, где используетсяранняя привязка(early binding), этот процесс осуществляется на этапе компиляции программы, а в языке, где применяетсяпоздняя привязка(late binding), она откладывается до времени выполнения программы. Ранняя привязка означает, что этап компиляции программы будет занимать большее время (так как при этом нужно привязывать переменные), однако выполняться программа будет быстрее, поскольку к этому моменту привязка будет завершена. Таким образом, поздняя привязка сокращает время компиляции, но увеличивает время выполнения программы.
При разработке PL/SQL было принято решение об использовании ранней привязки, чтобы объекты базы данных к моменту выполнения блока были уже проверены, и чтобы блок мог быть выполнен максимально быстро. Это вполне оправданно, так как блоки PL/SQL можно хранить в базе данных как процедуры, функции, модули и триггеры. Такие объекты хранятся в скомпилированном виде, то есть при необходимости их можно загрузить из базы данных и выполнить. Именно поэтому операторы DDL использовать нельзя. Оператор DDL модифицирует объект базы данных, следовательно, полномочия на объект должны быть подтверждены вновь. Процесс подтверждения полномочий требует привязки идентификаторов, а это уже было сделано во время компиляции.
Операторы DMLи операторы управления транзакциями–это единственные операторы, с помощью которых нельзя модифицировать объекты схем или полномочия на объекты схем, поэтому вPL/SQLмогут использоваться только они.
