CREATE FUNCTION функция (аргументы) RETURNS тип AS '
DECLARE
объявления BEGIN
IF условие THEN
команда:
[...] END IF;
END;
' LANGUAGE 'plpgsql';
В листинге 11.35 приведена функция, которая проверяет количество экземпляров книги на складе по коду и номеру издания. Код книги используется во внут-
рениих операциях базы данных и присутствует в нескольких таблицах. Следовательно, функция stock_amount() предназначена для вызова из других функций, а не прямого вызова из клиентской программы, поскольку большинству пользователей коды книг неизвестны.
Сначала мы читаем код ISBN командой SELECT INTO. Если команда SELECT INTO не смогла найти код ISBN по заданному коду книги и номеру издания, функция stock_amount() возвращает -1. Функция, вызвавшая stock_amount(), интерпретирует это значение как признак ошибки. Если код ISBN найден успешно, то другая команда SELECT INTO получает количество экземпляров книги на складе и возвращает полученную величину. На этом работа функции завершается.