Skip to main content

Создание хранимых процедур для вашего SQL Server

Видеокурс по SQL Essential. Урок 8. Хранимые процедуры. Пользовательские функции (Апрель 2025)

Видеокурс по SQL Essential. Урок 8. Хранимые процедуры. Пользовательские функции (Апрель 2025)
Anonim

Microsoft SQL Server предоставляет механизм хранимой процедуры для упрощения процесса разработки базы данных, группируя инструкции Transact-SQL в управляемые блоки. Хранимые процедуры оцениваются большинством разработчиков SQL Server, которые находят преимущества эффективности и безопасности, которые они получают, хорошо оценивают авансовые инвестиции во времени.

Преимущества использования хранимых процедур

Почему разработчик должен использовать хранимые процедуры?

Вот основные преимущества этой технологии:

  • Предварительно скомпилированное выполнение: SQL Server компилирует каждую хранимую процедуру один раз, а затем повторно использует план выполнения. Это приводит к огромному увеличению производительности при многократном вызове хранимых процедур.
  • Уменьшенный трафик клиент / сервер: Если пропускная способность сети является проблемой в вашей среде, вы с удовольствием узнаете, что хранимые процедуры могут сократить длинные SQL-запросы до одной строки, которая передается по кабелю.
  • Эффективное повторное использование кода и абстракции программирования: Хранимые процедуры могут использоваться несколькими пользователями и клиентскими программами. Если вы будете использовать их планомерно, вы обнаружите, что цикл разработки занимает меньше времени.
  • Расширенные средства обеспечения безопасности: Вы можете предоставить пользователям разрешение на выполнение хранимой процедуры независимо от базовых разрешений таблицы.

Хранимые процедуры похожи на пользовательские функции, но есть тонкие различия.

Состав

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

Они принимают данные в виде входных параметров, которые указаны во время выполнения. Эти входные параметры (если они реализованы) используются при выполнении ряда операторов, которые приводят к некоторому результату. Этот результат возвращается в вызывающую среду с помощью набора записей, выходных параметров и кода возврата.

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

пример

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

ВЫБЕРИТЕ продукт, количествоИЗ инвентаризацииWHERE Warehouse = 'FL'

Это привело к неэффективной работе на SQL Server. Каждый раз, когда диспетчер склада выполнял запрос, сервер базы данных был вынужден перекомпилировать запрос и выполнить его с нуля. Он также потребовал, чтобы менеджер склада имел знания SQL и соответствующие разрешения для доступа к информации таблицы.Вместо этого процесс можно упростить с помощью хранимой процедуры. Вот код для процедуры sp_GetInventory, которая извлекает уровни запасов для данного склада.

ПРОЦЕДУРА СОЗДАНИЯ sp_GetInventory@location varchar (10)КАКВЫБЕРИТЕ продукт, количествоИЗ инвентаризацииWHERE Warehouse = @location

Менеджер склада Флориды может затем получить доступ к уровням запасов, выпустив команду:

EXECUTE sp_GetInventory 'FL'

Менеджер склада в Нью-Йорке может использовать одну и ту же хранимую процедуру для доступа к ресурсам этой области:

EXECUTE sp_GetInventory 'NY'

Конечно, это простой пример, но преимущества абстракции можно увидеть здесь. Менеджеру склада не нужно понимать SQL или внутреннюю работу процедуры. С точки зрения производительности хранимая процедура работает чудесами. SQL Server создает план выполнения один раз, а затем повторно использует его, подключая соответствующие параметры во время выполнения.Теперь, когда вы узнали о преимуществах хранимых процедур, выходите туда и используйте их.

Попробуйте несколько примеров и оцените достигнутые улучшения производительности - вы будете поражены!

Таблица инвентаря

Я БЫТоварСкладКоличество
142зеленая фасольНью-Йорк100
214ГорохФлорида200
825КукурузаНью-Йорк140
512лимская фасольНью-Йорк180
491помидорыФлорида80
379АрбузФлорида85