Создание хранимой процедуры в Базе данных Azure для PostgreSQL

Завершено

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

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

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

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

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

Пользователь, создавший процедуру, является ее владельцем. Необходимо также указать язык.

Процедуры принимают следующие параметры:

  • name — при необходимости укажите имя схемы.
  • argmode — режим аргумента. Может быть IN, INOUT или VARIADIC. Значение по умолчанию — IN. Режим OUT не поддерживается. Вместо него используйте INOUT. VARDIAC — это неопределенное число входных аргументов одного типа. Они должны быть последними входными аргументами.
  • argname — имя аргумента.
  • argtype — тип данных аргумента.
  • default_expr — выражение по умолчанию (одного типа), которое будет использоваться, если параметр не указан. Входные параметры, следующие за параметром со значением по умолчанию, также должны иметь значения по умолчанию.
  • lang_name — язык, используемый для написания процедуры. Может быть sql, c, внутренний или имя определяемого пользователем процедурного языка, например plpgsql.

В следующем примере создается хранимая процедура с именем myprocedure, которая принимает входные параметры a и b. IN — это значение по умолчанию для параметров, поэтому нам не нужно явно определять их как входные параметры. При вызове хранимой процедуры значения, назначенные этим параметрам, вставляются в mytable.

CREATE PROCEDURE myprocedure (a integer, b integer)
    LANGUAGE SQL
    AS $$
        INSERT INTO mytable VALUES (a, b);
    $$;

Символ $$ используется для начала и конца строки. Вы также можете использовать одинарные кавычки, но это может привести к проблемам с другими языками программирования, поэтому рекомендуется $$.