Основы хранимых процедур
Хранимые процедуры в Microsoft SQL Server аналогичны процедурам в других языках программирования:
- они обрабатывают входные аргументы и возвращают вызывающей процедуре или пакету значения в виде выходных аргументов;
- они содержат программные инструкции, которые выполняют операции в базе данных, в том числе вызывающие другие процедуры;
- они возвращают значение состояния вызывающей процедуре или пакету, таким образом передавая сведения об успешном или неуспешном завершении (и причины последнего).
Хранимые процедуры можно выполнять с помощью инструкции Transact-SQL EXECUTE. Хранимые процедуры отличаются от функций тем, что они не возвращают значения на месте своих имен, и их нельзя непосредственно использовать в выражениях.
По сравнению с программами Transact-SQL, которые хранятся локально на клиентских компьютерах, хранимые процедуры SQL Server имеют следующие преимущества.
- Хранимые процедуры регистрируются на сервере.
- Хранимые процедуры могут иметь атрибуты безопасности (например, разрешения) и цепочки владения, кроме того, к ним можно прикреплять сертификаты.
Пользователи могут обладать разрешениями на выполнение хранимых процедур вместо прямых разрешений для работы с объектами, на которые ссылаются эти процедуры. - Хранимые процедуры позволяют сделать защиту приложений более надежной.
Параметризованные хранимые процедуры могут защитить приложения от атак, осуществляемых путем инжекции кода SQL. Дополнительные сведения см. в разделе Инжекция SQL. - Хранимые процедуры поддерживают модульное программирование.
Процедуру можно создать один раз и потом по мере необходимости вызывать ее в программе любое число раз. Это делает обслуживание приложения более удобным и позволяет унифицировать доступ приложений к базе данных. - Хранимые процедуры представляют собой именованный код, дающий возможность отсроченного связывания.
Это обеспечивает уровень косвенности, упрощающий развитие программного кода. - Хранимые процедуры позволяют уменьшить сетевой трафик.
Операцию, занимающую сотни строк программного кода Transact-SQL, можно выполнить в одной инструкции, которая обрабатывает процедуру, а не отправляет этот код по сети.
См. также
Основные понятия
Другие ресурсы
Основные сведения о хранимых процедурах