Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQLили функций (процедур)и сохраняемый в базе данных в откомпилированном виде
Семестр 6 Лекция 2
Хранимые процедуры
В лекции определяется понятие хранимых процедур. Приводятся примеры создания, изменения и использования хранимых процедур с параметрами. Дается определение входных и выходных параметров. Приводятся примеры создания и вызова хранимых процедур.
Ключевые слова:хранимая процедура, модульное программирование, план исполнения, синтаксический анализ, создание хранимой процедуры, параметры хранимой процедуры, входной параметр, выходной параметр, значение параметра по умолчанию, удаление хранимой процедуры, выполнение хранимой процедуры, процедура без параметров, обращение к процедуре, процедура с входными параметрами, процедура с входными и выходными параметрами, вложенные процедуры.
Понятие хранимой процедуры
Хранимые процедуры представляют собой группы связанных между собой операторов SQL, применение которых делает работу программиста более легкой и гибкой, поскольку выполнить хранимую процедуру часто оказывается гораздо проще, чем последовательность отдельных операторов SQ L.
Хранимые процедуры представляют собой набор команд, состоящий из одного или нескольких операторов SQLили функций (процедур)и сохраняемый в базе данных в откомпилированном виде.
Выполнение в базе данных хранимых процедур вместо отдельных операторов SQL дает пользователю следующие преимущества:
1. необходимые операторы уже содержатся в базе данных;
2. все они прошли этап синтаксического анализа и находятся в исполняемом формате; перед выполнением хранимой процедуры SQL Server генерирует для нее план исполнения, выполняет ее оптимизацию и компиляцию;
3. хранимые процедуры поддерживают модульное программирование, так как позволяют разбивать большие задачи на самостоятельные, более мелкие и удобные в управлении части;
4. хранимые процедуры могут вызывать другие хранимые процедуры и функции;
5. хранимые процедуры могут быть вызваны из прикладных программ других типов;
6. как правило, хранимые процедуры выполняются быстрее, чем последовательность отдельных операторов;
7. хранимые процедуры проще использовать: они могут состоять из десятков и сотен команд, но для их запуска достаточно указать всего лишь имя нужной хранимой процедуры. Это позволяет уменьшить размер запроса, посылаемого от клиента на сервер, а значит, и нагрузку на сеть;
8. хранение процедур в том же месте, где они исполняются, обеспечивает уменьшение объема передаваемых по сети данных и повышает общую производительность системы.
9. применение хранимых процедур упрощает сопровождение программных комплексов и внесение изменений в них.
Обычно все ограничения целостности в виде правил и алгоритмов обработки данных реализуются на сервере баз данных и доступны конечному приложению в виде набора хранимых процедур, которые и представляют интерфейс обработки данных.
Для обеспечения целостности данных, а также в целях безопасности, приложение (клиент) обычно не получает прямого доступа к данным - вся работа с ними ведется путем вызова тех или иных хранимых процедур.
Подобный подход делает весьма простой модификацию алгоритмов обработки данных, тотчас же становящихся доступными для всех пользователей сети, и обеспечивает возможность расширения системы без внесения изменений в само приложение: достаточно изменить хранимую процедуру на сервере баз данных. Разработчику не нужно перекомпилировать приложение, создавать его копии, а также инструктировать пользователей о необходимости работы с новой версией. Пользователи вообще могут не подозревать о том, что в систему внесены изменения.
Хранимые процедуры существуют независимо от таблиц или каких-либо других объектов баз данных.
Они могут вызываться
· клиентской программой,
· другой хранимой процедурой,
· триггером.
Разработчик может управлять правами доступа к хранимой процедуре, разрешая или запрещая ее выполнение. Изменять код хранимой процедуры разрешается только ее владельцу или члену фиксированной роли базы данных. При необходимости можно передать права владения ею от одного пользователя к другому.