Аргументы

При вызове функции PL/pgSQL могут получать аргументы различных типов. В аргументах пользователь передает исходные данные, необходимые для работы функции. Аргументы делают функции PL/pgSQL более универсальными и значительно расширяют область их возможного применения. Список аргументов приводится после имени функции в круглых скобках и разделяется запятыми.

Количество и типы аргументов должны соответствовать первоначальному определению функции.

В листинге 6.15 приведен пример вызова функции.

Листинг 6.15. Пример вызова функции

SELECT books.get_author('Margaret');

Ответ: Margaret Brown.

ПРИМЕЧАНИЕ. Функции get_author(text) и get_author(integer) будут рассмотрены позднее в этой главе.

Аргументы, полученные функцией, поочередно присваиваются идентификаторам, состоящим из знака доллара ($) и порядкового номера. Первому аргументу соответствует идентификатор $1, второму - $2 и т. д.

Максимальное количество аргументов равно 16, поэтому идентификаторы аргументов лежат в интервале от $1 до $16. В листинге 6.16 приведен пример функции, которая удваивает свой целочисленный аргумент.

Листинг 6.16. Непосредственное использование аргументов в переменных

CREATE OR REPLACE FUNCTION books.double_price(real)

RETURNS real AS

$BODY$

DECLARE

BEGIN

-- Вернуть значение аргумента, умноженное на 2.

return $1 * 2;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE

Если функция имеет большое количество аргументов, в обозначениях вида «$+номер» легко запутаться. Чтобы программисту было проще отличить одни аргумент от другого (или если он хочет присвоить переменной аргумента более содержательное имя), в PL/pgSQL предусмотрена возможность определения псевдонимов переменных.

Псевдоним создается при помощи ключевого слова ALIAS и представляет собой альтернативный идентификатор для ссылки на аргумент. Перед использованием все псевдонимы (как и обычные переменные) должны быть объявлены в секции объявлений блока. В листинге 6.17 показан синтаксис применения ключевого слова ALIAS.

Листинг 6.17. Синтаксис использования ключевого слова ALIAS

CREATE FUNCTION функция (аргументы) RETURNS тип AS '

DECLARE

идентификатор1 ALIAS FOR $1;

идентификатор2 ALIAS FOR $2;

BEGIN

END;

' LANGUAGE ‘plpgsql’ VOLATILE

В листинге 6.18 приведен простой пример, демонстрирующий применение псевдонимов в функциях PL/pgSQL. Функция triple_price получает вещественное число, умножает его на три и возвращает результат.

Листинг 6.18. Псевдонимы PL/pgSQL

CREATE OR REPLACE FUNCTION books.triple_price(real)

RETURNS real AS

$BODY$

DECLARE

-- Переменная input_price объявляется как псевдоним

-- для переменной аргумента, обычно обозначаемой

-- идентификатором $1.

input_price ALIAS FOR $1;

BEGIN

-- Вернуть аргумент, умноженный на три.

RETURN input_price * 3;

END;

$BODY$

LANGUAGE 'plpgsql' VOLATILE

Если теперь вызвать функцию triple_price при выполнении команды SQL SELECT будет получен результат, показанный в листинге 6.19.

Листинг 6.19. Результат вызова функции triple_price()

SELECT books.triple_price(2e+037);

Ответ: 6e+037.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: