Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости

PostgreSQL CREATE FUNCTION

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

CREATE [OR REPLACE] FUNCTION имя_функции ([параметр [-]])
RETURNS тип_данных
AS {блок_кода | объектный_файл, связующий_идентификатор} LANGUAGE {С | SQL | PLPGSQL | PLTCL | PLTCLU | PLPERL | internal}
[WITH {[ISCACHABLE] [,] [ISSTRICT]}]

Где:

CREAТЕ [OR REPLACE имя_функции

Создается новая функция с указанным именем или заменяется уже существующая функция. Предложение OR REPLACE не позволяет изменять имя, входные параметры или выходные результаты существующей функции. Чтобы изменить эти параметры, вы должны удалить функцию и создать ее заново.

RETURNS тип_данных

Указывается тип данных, возвращаемых функцией.

AS (блок_кода объектный _файл, связующий идентификатор)

Определяется состав пользовательской функции. блок_кода может представлять собой строку, определяющую функцию (и зависящую от параметра LANGUAGE), то есть внутреннее имя функции, имя объектного файла и путь к нему, запрос SQL или текст на процедурном языке. Это определение также может представлять собой объектный файл и связующий идентификатор (link symbol) (для языка С).

LANGUAGE {С | SQL | PLPGSQL PLTCL PLTCLU internal}

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

[WITH {[ISCACHABLE] [] [ISSTRICT]}]

Параметр оптимизирует производительность PostgreSQL, показывая, что функция всегда возвращает одно и то же значение при одинаковом наборе параметров. Предложение WITH ISC ACH ABLE сходно с параметром ANSI DETERMINISTIC, за тем исключением, что оно позволяет оптимизатору заранее оценить вызов функции. Предложение WITH ISSTRICT сходно с параметром ANSI RETURNS NULL ON NULL INPUT. Если параметр опущен, функционирование, принятое по умолчанию, похоже на предложение CALLED ON NULL INPUT. Заметьте, что вы можете включать в одно объявление функции оба ключевых слова.

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

Вот пример простой SQL функции в PostgreSQL.

CREATE FUNCTION mах_ргоjеct_nbr RETURNS int4

AS ‘SELECT MAX(title_ID) FROM, titles AS RESULT-LANGUAGE ‘sql1;

В этом примере мы создаем пользовательскую функцию, которая возвращает максимальное значение title_lD> из таблицы titles.

В PostgreSQL инструкция CREATE FUNCTION используется как замена инструкции CREATE PROCEDURE, а также определяет действия для инструкции CREATE TRIGGER.

Источник