Учебники

PostgreSQL — Функции

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

Функции могут быть созданы на любом языке по вашему выбору, например, SQL, PL / pgSQL, C, Python и т. Д.

Синтаксис

Основной синтаксис для создания функции следующий:

CREATE [OR REPLACE] FUNCTION function_name (arguments) 
RETURNS return_datatype AS $variable_name$
   DECLARE
      declaration;
      [...]
   BEGIN
      < function_body >
      [...]
      RETURN { variable_name | value }
   END; LANGUAGE plpgsql;

Куда,

  • имя-функции указывает имя функции.

  • Опция [ИЛИ ЗАМЕНА] позволяет изменить существующую функцию.

  • Функция должна содержать инструкцию возврата .

  • Предложение RETURN указывает тип данных, который вы собираетесь возвращать из функции. Аргумент return_datatype может быть базовым, составным или доменным типом или может ссылаться на тип столбца таблицы.

  • Функция body содержит исполняемую часть.

  • Ключевое слово AS используется для создания автономной функции.

  • plpgsql — это имя языка, на котором реализована функция. Здесь мы используем эту опцию для PostgreSQL, это может быть SQL, C, внутренний или имя пользовательского процедурного языка. Для обратной совместимости имя может быть заключено в одинарные кавычки.

имя-функции указывает имя функции.

Опция [ИЛИ ЗАМЕНА] позволяет изменить существующую функцию.

Функция должна содержать инструкцию возврата .

Предложение RETURN указывает тип данных, который вы собираетесь возвращать из функции. Аргумент return_datatype может быть базовым, составным или доменным типом или может ссылаться на тип столбца таблицы.

Функция body содержит исполняемую часть.

Ключевое слово AS используется для создания автономной функции.

plpgsql — это имя языка, на котором реализована функция. Здесь мы используем эту опцию для PostgreSQL, это может быть SQL, C, внутренний или имя пользовательского процедурного языка. Для обратной совместимости имя может быть заключено в одинарные кавычки.

пример

Следующий пример иллюстрирует создание и вызов отдельной функции. Эта функция возвращает общее количество записей в таблице COMPANY. Мы будем использовать таблицу COMPANY , в которой есть следующие записи:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Функция totalRecords () работает следующим образом —

CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
	total integer;
BEGIN
   SELECT count(*) into total FROM COMPANY;
   RETURN total;
END;
$total$ LANGUAGE plpgsql;

Когда вышеуказанный запрос будет выполнен, результатом будет —

testdb# CREATE FUNCTION

Теперь давайте выполним вызов этой функции и проверим записи в таблице COMPANY.

testdb=# select totalRecords();

Когда вышеуказанный запрос будет выполнен, результатом будет —