- •Общая характеристика субд Access. Создание и редактирование базы данных средствами субд Access. Свойства реляционной таблицы. Отношения между таблицами.
- •9Структуру стандарта sql.Типы данных и операции , агрегирующие функции. Примеры.
- •19 Администрирование бд и управление объектами. Разграничение доступа. Привилегии, роли
- •20 Управл парал-ной обработкой данных. Блокировки
- •13 Общая концепция субд Oracle
- •15.Курсоры , их атрибуты. Использования цикла for при работе с курсорами.
- •18.Триггеры.Объявление, назначение и примеры использования. Модификация триггеров.
- •16.Обработка исключений.Пользовательские исключения.Возбуждение исключений.
- •Возбуждение исключений
- •3. По аналогии с левым можно определить правое внешнее соединение. Перепишем предыдущий пример с использованием его возможностей:
- •Модификация данных
- •Модификация объектов базы данных
- •Создание таблиц. Ограничения
- •Последовательности
- •Модификация и удаление таблиц
- •Представления
- •14. Язык pl/sql. Основные типы данных и операторы
- •Структура программы
- •Идентификаторы и описания переменных
- •Типы данных
- •Процедурные операторы
- •Особенности записи операторов sql
- •17.Подпрограммы. Хранимые подпрограммы. Пакеты.
- •Хранимые подпрограммы
Процедурные операторы
Язык PL/SQL обладает стандартным набором операторов, характерных для любого языка программирования. Сведем этот набор в таблицу:
оператор присваивания |
переменная := выражение; |
безусловный переход |
GOTO метка; |
условный оператор |
IF логическоевыражение THEN операторы; [ ELSIF логическоевыражение THEN операторы; ] [ ELSE операторы; ] END IF; |
цикл общего вида |
LOOP [ операторы; ] [ EXIT [ WHEN условиевыхода]]; [ операторы; ] END LOOP; |
цикл FOR |
FOR переменнаяцикла IN [REVERSE] начальноезначение .. конечноезначение LOOP [ операторы; ] [ EXIT [ WHEN условиевыхода]]; [ операторы; ] END LOOP; |
цикл WHILE |
WHILE условиецикла LOOP [ операторы; ] [ EXIT [ WHEN условиевыхода]]; [ операторы; ] END LOOP; |
Особенности записи операторов sql
Особенности реализации языка PL/SQL накладывают ряд ограничений на использование операторов SQL в составе программ на этом языке.
Во-первых, в программах на языке PL/SQL нельзя использовать операторы определения данных (т.е. создавать, модифицировать таблицы и выполнять другую подобную работу). Во-вторых, одиночный (т.е. не входящий в состав курсора) оператор SELECT должен быть записан в форме SELECT списокстолбцов INTO списокпеременных FROM …
Такой оператор должен возвращать ровно одну строку, значения которой помещаются в указанный список переменных (на этом месте можно указать одну переменную-запись, и тогда данные будут последовательно помещаться в поля этой записи). Если оператор SELECT возвращает более одной строки, возбуждается исключительная ситуация TOO_MANY_ROWS. Если же этот оператор не возвращает ни одной строки, возникает ситуация NO_DATA_FOUND.
17.Подпрограммы. Хранимые подпрограммы. Пакеты.
Подпрограммы – это блоки PL/SQL с именами, которые могут быть вызваны и могут принимать параметры. Имеются два типа подпрограмм: процедуры и функции. Обычно процедуры используются, если необходимо выполнить некоторое действие, а функции – если необходимо вычислить некоторое значение.
Как и анонимные PL/SQL блоки, подпрограмму имеют декларативную часть, исполняемую часть и обработчики исключительных ситуаций. Декларативная часть содержит объявления типов, курсоров, констант, переменных, исключений и вложенных подпрограмм. Эти элементы локальны в подпрограмме и разрушаются при выходе из нее.
Синтаксис объявления процедуры и функции следующий:
PROCEDURE имяпроцедуры [(параметр [, параметр]…)] IS
[локальныеобъявления]
BEGIN
исполняемыеутверждения
[EXCEPTION
обработчикиисключений ]
END [имяпроцедуры];
///////////////////////////////////////////////////////////////////////////
FUNCTION имяфункции [(параметр [, параметр]…)] RETURN типданных IS
[локальныеобъявления]
BEGIN
исполняемыеутверждения
END [имяфункции];
Описания параметров задаются следующим образом:
имяпараметра [IN | OUT [NOCOPY] | IN OUT [NOCOPY] ] типпараметра
[:= | DEFAULT] выражение
Фразы IN (которая принимается по умолчанию), OUT и IN OUT означают соответственно входные, выходные и модифицируемые параметры. Желательно не использовать режимы OUT и IN OUT при написании функций, чтобы избежать побочных эффектов.
Фактический аргумент, указываемый на месте IN – параметра, может быть константой, литералом, проинициализированной переменной либо выражением, и в отличие от OUT и IN OUT – параметров, IN – параметру может быть приписано значение по умолчанию.
На месте OUT или IN OUT параметра может быть указана только переменная. Как и переменные, OUT – параметры инициализируются NULL -значением.
Если осуществляется нормальный выход из подпрограммы, то выходным и модифицируемым аргументам значения присваиваются, а если возникают необработанные исключения, то значения не присваиваются.
Фраза NOCOPY задает режим передачи параметров по ссылке (в противном случае параметры передаются по значению).
Тело подпрограммы должно содержать хотя бы один оператор (им может быть NULL). Для выхода из подпрограммы используется оператор: RETURN [выражение]
В процедурах использование выражения в операторе RETURN недопустимо, а в функциях – наоборот, обязательно. Кроме того, если функция завершит свою работу, не выполнив оператор RETURN, будет возбуждено стандартное исключение PROGRAM_ERROR.
Вызов подпрограммы может быть выполнен двумя способами:
из другой подпрограммы или анонимного блока, например
DECLARE
-- тела процедур
BEGIN
BirthdayPremium(20, 100);
END;
с помощью команды SQL* Plus EXECUTE
execute BirthdayPremium(20, 100);
При вызове подпрограмм можно записывать фактические аргументы, используя позиционную, именованную, либо смешанную нотации:
BirthdayPremium(20, 100);
BirthdayPremium(v1=>20, v2=>100);
BirthdayPremium(20, v2=>100);
Требуется, чтобы все позиционные параметры стояли перед именованными, т.е. запись
BirthdayPremium(v1=>20, 100) — недопустима.