Храни­мые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQLили функций (процедур)и сохраняемый в базе данных в от­компилированном виде

Семестр 6 Лекция 2

Хранимые процедуры

 

В лекции определяется понятие хранимых процедур. Приводятся примеры созда­ния, изменения и использования хранимых процедур с параметрами. Дается определение входных и выходных параметров. Приводятся примеры создания и вызова хранимых процедур.

 

Ключевые слова:хранимая процедура, модульное программирование, план исполнения, синтаксический анализ, создание хранимой проце­дуры, параметры хранимой процедуры, входной параметр, выходной параметр, значение параметра по умолчанию, удаление хранимой процедуры, выполнение хранимой процедуры, процедура без параметров, обращение к процедуре, процедура с входными параметрами, проце­дура с входными и выходными параметрами, вложенные процедуры.

Понятие хранимой процедуры

Хранимые процедуры представляют собой группы связанных между со­бой операторов SQL, применение которых делает работу программиста более легкой и гибкой, поскольку выполнить хранимую процедуру часто оказывает­ся гораздо проще, чем последовательность отдельных операторов SQ L.

Храни­мые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQLили функций (процедур)и сохраняемый в базе данных в от­компилированном виде.

Выполнение в базе данных хранимых процедур вме­сто отдельных операторов SQL дает пользователю следующие преимущества:

1. необходимые операторы уже содержатся в базе данных;

2. все они прошли этап синтаксического анализа и находятся в испол­няемом формате; перед выполнением хранимой процедуры SQL Server генерирует для нее план исполнения, выполняет ее оптимиза­цию и компиляцию;

3. хранимые процедуры поддерживают модульное программирование, так как позволяют разбивать большие задачи на самостоятельные, более мелкие и удобные в управлении части;

4. хранимые процедуры могут вызывать другие хранимые процедуры и функции;

5. хранимые процедуры могут быть вызваны из прикладных программ других типов;

6. как правило, хранимые процедуры выполняются быстрее, чем пос­ледовательность отдельных операторов;

7. хранимые процедуры проще использовать: они могут состоять из десятков и сотен команд, но для их запуска достаточно указать всего лишь имя нужной хранимой процедуры. Это позволяет уменьшить размер за­проса, посылаемого от клиента на сервер, а значит, и нагрузку на сеть;

8. хранение процедур в том же месте, где они исполняются, обеспечивает уменьшение объема передаваемых по сети данных и повышает общую про­изводительность системы.

9. применение хранимых процедур упрощает со­провождение программных комплексов и внесение изменений в них.

 

Обыч­но все ограничения целостности в виде правил и алгоритмов обработки данных реализуются на сервере баз данных и доступны конечному приложе­нию в виде набора хранимых процедур, которые и представляют интерфейс обработки данных.

Для обеспечения целостности данных, а также в целях безопасности, приложение (клиент) обычно не получает прямого доступа к данным - вся работа с ними ведется путем вызова тех или иных хранимых процедур.

 

Подобный подход делает весьма простой модификацию алгоритмов обработки данных, тотчас же становящихся доступными для всех пользо­вателей сети, и обеспечивает возможность расширения системы без внесе­ния изменений в само приложение: достаточно изменить хранимую про­цедуру на сервере баз данных. Разработчику не нужно перекомпилировать приложение, создавать его копии, а также инструктировать пользователей о необходимости работы с новой версией. Пользователи вообще могут не подозревать о том, что в систему внесены изменения.

Хранимые процедуры существуют независимо от таблиц или каких-либо других объектов баз данных.

 

Они могут вызываться

· клиентской программой,

· другой хранимой процедурой,

· триггером.

 

Разработчик может уп­равлять правами доступа к хранимой процедуре, разрешая или запрещая ее выполнение. Изменять код хранимой процедуры разрешается только ее владельцу или члену фиксированной роли базы данных. При необходимо­сти можно передать права владения ею от одного пользователя к другому.