Создание хранимой процедуры в Базе данных 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);
$$;
Символ $$
используется для начала и конца строки. Вы также можете использовать одинарные кавычки, но это может привести к проблемам с другими языками программирования, поэтому рекомендуется $$
.