Использование атрибута %ROWTYPE
Листинг 11.30. Использование атрибута %ROWTYPE
CREATE FUNCTION get_author (integer) RETURNS text AS '
DECLARE
-- Объявление псевдонима для аргумента функции.
-- в котором должен передаваться код автора,
author Jd ALIAS FOR $1:
-- Объявление переменной, структура которой
-- совпадает со структурой таблицы authors,
found author authors ROWTYPE:
BEGIN
-- Найти в таблице authors фамилию автора.
-- код которого совпадает с переданным аргументом.
SELECT INTO found_author * FROM authors WHERE id = authorjd:
-- Вернуть имя и фамилию, разделенные пробелом.
RETURN found_author.first_name || " " || found_author.last_name:
END:
' LANGUAGE 'plpgsql':
Обратите внимание па звездочку (*) в списке полей команды SELECT. Поскольку переменная found_author объявлялась с атрибутом UROWTYPE для таблицы authors, она имеет такую же структуру, как и записи таблицы authors. Таким образом, конструкция SELECT * заполняет переменную found_author значениями полей найденной записи. Пример вызова новой версии get_author() приведен в листинге 11.31.