36.3. Пользовательские функции
В Postgres Pro представлены функции четырёх видов:
функции на языке запросов (функции, написанные на SQL) (Раздел 36.5)
функции на процедурных языках (функции, написанные, например, на PL/pgSQL или PL/Tcl) (Раздел 36.8)
внутренние функции (Раздел 36.9)
функции на языке C (Раздел 36.10)
Функции любых видов могут принимать в качестве аргументов (параметров) базовые типы, составные типы или их сочетания. Кроме того, любые функции могут возвращать значения базового или составного типа. Также можно определить функции, возвращающие наборы базовых или составных значений.
Функции многих видов могут также принимать или возвращать определённые псевдотипы (например, полиморфные типы), но доступные средства для работы с ними различаются. За подробностями обратитесь к описанию конкретного вида функций.
Проще всего определить функции на языке SQL, поэтому сначала мы рассмотрим их. Многие концепции, касающиеся функций на SQL, затем распространятся и на другие виды функций.
Изучая эту главу, будет полезно обращаться к странице справки по команде CREATE FUNCTION, чтобы лучше понимать примеры.
36.3. User-Defined Functions
Postgres Pro provides four kinds of functions:
query language functions (functions written in SQL) (Section 36.5)
procedural language functions (functions written in, for example, PL/pgSQL or PL/Tcl) (Section 36.8)
internal functions (Section 36.9)
C-language functions (Section 36.10)
Every kind of function can take base types, composite types, or combinations of these as arguments (parameters). In addition, every kind of function can return a base type or a composite type. Functions can also be defined to return sets of base or composite values.
Many kinds of functions can take or return certain pseudo-types (such as polymorphic types), but the available facilities vary. Consult the description of each kind of function for more details.
It's easiest to define SQL functions, so we'll start by discussing those. Most of the concepts presented for SQL functions will carry over to the other types of functions.
Throughout this chapter, it can be useful to look at the reference page of the CREATE FUNCTION command to understand the examples better.