- •Оглавление
- •Глава 1. Модели данных 8
- •Глава 2. Теоретические основы реляционных баз данных 31
- •Глава 8. Администрирование баз данных на примере sql Server 99
- •Введение. Понятие баз данных. Виды баз данных. Средства реализации баз данных. Основные этапы создания баз данных
- •Глава 1. Модели данных
- •1.1 Уровни представления данных. Понятия схемы и подсхемы данных
- •1.2 Модели концептуального уровня представления данных
- •1.3 Модели данных логического уровня представления данных
- •1.4 Методология idef1x построения логических моделей реляционных баз данных
- •1.5 Case-средства проектирования баз данных
- •Глава 2. Теоретические основы реляционных баз данных
- •2.1 Основные понятия. Операции обновления и реляционной алгебры
- •2.2 Реляционное исчисление кортежей и доменов
- •2.3. Языки манипулирования данными в реляционных системах
- •2.4. Понятие ключа и функциональных зависимостей
- •2.5 Нормализация отношений. 1, 2, 3, 4, 5 нормальные формы отношений
- •2.6 Описание формального алгоритма приведения отношений к третьей нормальной форме
- •2.7 Пример анализа отношений базы данных на третью нормальную форму
- •Глава 3. Физическое проектирование баз данных
- •3.1 Формат и размещение физических (хранимых) записей
- •3.2 Методы доступа к данным
- •Глава 4. Свойства баз данных
- •4.1 Целостность данных
- •4.2 Свойство безопасности и секретности баз данных
- •4.3 Восстанавливаемость, согласованность и эффективность баз данных
- •4.4 Реорганизация баз данных. Администратор баз данных. Словарь данных
- •Глава 5. Язык sql. Стандарт языка sql
- •5.1 История sql. История стандарта sql. Уровни соответствия. Классы инструкций sql
- •5.2 Идентификаторы. Константы. Операторы. Типы данных. Ограничения
- •Глава 6. Теоретические основы распределенных баз данных
- •6.1 Основные понятия систем с распределенной обработкой данных
- •6.2 Изолированность пользователей в многопользовательских системах
- •6.3 Сериализация транзакций. Методы сериализации транзакций
- •6.4 Журнализация и буферизация изменений в базах данных
- •Глава 7. Пример реализации распределённых баз данных. Ms sql Server
- •7.1. Основные характеристики ms sql Server. Системные базы данных, таблицы и хранимые процедуры. Базы данных и файлы
- •7.2 Таблицы баз данных. Создание, удаление, изменение
- •7.3 Индексы баз данных
- •7.4 Программирование на Transact sql. Комментарии. Переменные. Команды управления
- •7.5 Курсоры. Типы курсоров. Работа с курсорами
- •7.6 Правила, значения по умолчанию, представления
- •7.7 Хранимые процедуры и функции
- •7.8. Управление триггерами и транзакциями
- •7.9 Диагностика и сбор данных. Оптимизация запросов
- •7.10 Удаленный доступ к данным
- •Глава 8. Администрирование баз данных на примере sql Server
- •8.1. Система безопасности. Аутентификация. Учетные записи и роли. Планирование разрешений
- •8.2. Репликация данных. Типы репликаций
- •8.3. Перемещение данных
- •8.4. Резервное копирование и восстановление баз данных
- •8.5 Автоматизация решения административных задач. Система оповещений
- •Заключение
- •Приложение
- •Список рекомендуемой литературы
7.7 Хранимые процедуры и функции
Хранимая процедура – это объект базы данных, набор откомпилированных команд - подпрограмма, работающая на сервере. Так как хранимая процедура проходит предварительную компиляцию и оптимизацию, она более эффективна, чем аналогичный набор команд, исполняемый с клиента. Хранимая процедура вызывается по имени, как программный модуль и может принимать параметры и возвращать результаты. В код хранимой процедуры может использоваться не только операции извлечения и модификации данных, но и логика ветвления, переменные и другие языковые инструкции, которые делают хранимые процедуры мощным средством реализации логики обработки.
Хранимые процедуры могут быть четырех типов: системные (System), локальные (Local), временные (Temporary), и удаленные (Remote). Эта классификация по области видимости. Системные процедуры хранятся в базе данных master и начинаются с префикса sp_. Для создания своей системной процедуры необходимо ее создать с именем sp_имя и поместить в master, тогда она будет видима и доступна любому серверу. Для изменения системной хранимой процедуры нужно сделать ее копию, сохранить оригинальную процедуру под другим именем. Локальные хранимые процедуры создаются в пользовательских базах данных. Если процедура создается с именем # или ##, то получаете временную хранимую процедуру, помещаемую в базу данных tempdb. Процедуры, начинающиеся с ## - глобальные, они видны любой сессии связи с данным сервером. Процедуры с одним # - локальные и видны только из соединения, в котором они созданы. Когда соединение, в котором создана процедура, закрыто, процедура автоматически уничтожается. Удаленные процедуры могут вызываться с иного, чем текущий сервер, с которым клиентское приложение установило соединение. При этом текущий сервер является промежуточным звеном. Есть еще один тип хранимых процедур – расширенные хранимые процедуры. Они принципиально отличаются от перечисленных. Это DLL, как правило написанные на С и называются хранимыми только потому, что имя хранится в базе данных SQL Server. Сами DLL хранятся как файлы в соответствующем каталоге ОС. Для создания хранимой процедуры используется команда:
CREATE PROC[EDURE] <имя процедуры> [;< число>]
[@ имя_параметра тип_данных [VARYING] [=<значение>] [OUTPUT] [, …]
[WITH {RECOMPILE | ENCRYPTION}]
[FOR REPLICATION]
AS <инструкции SQL>
Здесь: [; число] – задает номер версии вашей же программы с тем же именем,
@параметр – параметр, передаваемый или получаемый из процедуры. Процедура может иметь до 1024 параметров. Параметры могут принимать значения NULL. Параметр может относиться к любому типу данных, в том числе TEXT, IMAGE, CURSOR. Для параметра типа CURSOR ключевые слова VARYING и OUNPUT являются обязательными,
VARYING - означает, что параметр возвращает итоговый набор, используется только для типа данных CURSOR,
<Значение> – определяет значение параметра по умолчанию. Может быть любой константой или NULL,
OUNPUT – означает, что параметр является выходным, то есть может возвращаться стороне, вызвавшей процедуру. Параметры типа CURSOR обязаны быть выходными,
With RECOMPILE – процедуры будет повторно компилироваться при каждом выполнении.
FOR Replication – опция позволяет выполнить процедуру в процессе репликации.
Нельзя применять опцию WITH RECOMPILE в инструкции Create Procedure, содержащей опцию FOR Replication. Эту опцию применяют для создания процедуры, которая выполняется в режиме репликации.
Для шифрования определения хранимой процедуры, которая записывается в системную таблицу syscomment, в инструкции Create Procedure может быть добавлена опция ENCRYPTION (для запрещения просмотра пользователями информации об определении процедуры). Могут быть изменены только незашифрованные процедуры.
Ограничения: процедуры не могут содержать команд ALTER TABLE, CREATE INDEX, CREATE TABLE, DROP TABLE, DROP INDEX, TRANCATE TABLE, UPDATE STATSTICS.
После создания хранимой процедуры достаточно ввести ее имя в командной строке. Если вызов хранимой процедуры следует не в первой строке, а за выполнением других инструкций, для ее активизации необходимо применять команду
EXEC[UTE] [@код возврата] <имя процедуры> [;<число>]
[@список параметров] [WITH RECOMPILE]
Здесь код возврата – переменная для сохранения кода возврата процедуры,
номер – числовой идентификатор процедуры, при его отсутствии выполняется процедура с максимальным номером версии. Удаление хранимой процедуры:
Drop procedure <имя_хранимой процедуры>.
Процедуры могут встраиваться внутрь других процедур. Возможно до 16 уровней вложенности. Модификация хранимых процедур осуществляется командой:
ALTER PROC[EDURE] имя процедуры [; число]
[@ имя_параметра тип_данных [VARYING] [=значение] [OUTPUT] [, …]
[WITH {RECOMPILE | ENCRYPTION}]
[FOR REPLICATION]
AS ИНСТРУКЦИЯ_SQL
[ RETURN [код статуса]]
