37.3. Пользовательские функции

В PostgreSQL представлены функции четырёх видов:

  • функции на языке запросов (функции, написанные на SQL) (Раздел 37.5)

  • функции на процедурных языках (функции, написанные, например, на PL/pgSQL или PL/Tcl) (Раздел 37.8)

  • внутренние функции (Раздел 37.9)

  • функции на языке C (Раздел 37.10)

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

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

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

Изучая эту главу, будет полезно обращаться к странице справки по команде CREATE FUNCTION, чтобы лучше понимать примеры. Некоторые примеры из этой главы можно найти в файлах funcs.sql и funcs.c в каталоге src/tutorial исходного кода PostgreSQL.