В этой статье представлен обзор хранимых процедур.

🧐 Что такое хранимые процедуры

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

SQLite не поддерживает хранимые процедуры.

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

  1. Для упрощения сложных операций путем их инкапсуляции в один простой в использовании модуль.
  2. Для обеспечения согласованности данных без необходимости повторного создания серии шагов. Если все разработчики и приложения используют одну и ту же хранимую процедуру, все будут использовать один и тот же код.
  3. Для упрощения управления изменениями. Если таблицы, имена столбцов, бизнес-логика или что-то еще изменяются, необходимо изменить только код хранимой процедуры, и никто другой не должен знать об изменениях.
  4. Чтобы уменьшить количество усилий, необходимых для обработки команды. СУБД выполняет меньше работы, потому что хранимые процедуры часто хранятся в скомпилированном виде. Это приводит к повышению производительности.
  5. Для создания более надежного и адаптируемого кода. Существуют функции и части языка SQL, которые доступны только в рамках одного запроса. Вот почему хранимые процедуры могут их использовать.

Синтаксис хранимых процедур сильно различается в разных СУБД. На самом деле создать полностью переносимые хранимые процедуры исключительно сложно.

💎 Создание хранимых процедур

CREATE OR REPLACE PROCEDURE существует в PostgreSQL для создания новой процедуры или замены существующего определения новым. Чтобы пользователь PostgreSQL мог СОЗДАТЬ ИЛИ ЗАМЕНИТЬ ПРОЦЕДУРУ, требуется привилегия USAGE для языка.

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

Теперь не упускайте из виду SQL Server, вот несколько примеров его использования.

Эта хранимая процедура вообще не принимает никаких параметров. Вызывающее приложение извлекает значение, используя поддержку кода возврата SQL Server. Здесь локальная переменная с именем @news_count объявляется с помощью оператора DECLARE. Затем эта переменная используется в операторе SELECT, чтобы она содержала значение, возвращаемое функцией COUNT(). Наконец, оператор RETURN используется для возврата счетчика вызывающему приложению в виде RETURN @news_count .

Выполнение хранимых процедур

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

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

В отличие от функции хранимая процедура не возвращает значение. Объяснение простое: единственная функция хранимой процедуры — выполнить действие.

Давайте создадим хранимую процедуру

Давайте назовем это

Теперь создадим функцию

Давайте назовем это

🆚 Хранимые процедуры отличаются от функций:

  • При использовании параметров INOUT хранимые процедуры ничего не должны возвращать и возвращают только одну строку.
  • В хранимых процедурах можно фиксировать и откатывать транзакции, но не в функциях.
  • Вы выполняете хранимую процедуру, используя оператор CALL/EXECUTE, а не оператор SELECT.
  • В отличие от функций, процедуры нельзя накладывать на другие команды DML.

😎 Преимущества..

  • Хранимые процедуры можно повторно вводить так часто, как это возможно, что резко сокращает количество переходов между серверами приложений и баз данных.
  • Вместо отправки операторов SQL для получения результатов и сокращения времени отклика приложение теперь должно просто вызывать функцию.
  • Эффективность приложения повышена. Сервер баз данных PostgreSQL предварительно объединил пользовательские функции и хранимые процедуры.

Надеюсь, эта статья была для вас интересной и веселой 💕!