12
Практика
1. Создайте функцию onhand_qty для подсчета имеющихся
в наличии книг. Функция принимает параметр составного
типа books и возвращает целое число.
Используйте эту функцию в представлении catalog_v
в качестве «вычисляемого поля».
Проверьте, что приложение отображает количество книг.
2. Создайте табличную функцию get_catalog для поиска книг.
Функция принимает значения полей формы поиска
(«имя автора», «название книги», «есть на складе»)
и возвращает подходящие книги в формате catalog_v.
Проверьте, что в «Магазине» начал работать поиск и
просмотр.
1.
FUNCTION onhand_qty(book books) RETURNS integer
2.
FUNCTION get_catalog(
author_name text, book_title text, in_stock boolean
)
RETURNS TABLE(
book_id integer, display_name text, onhand_qty integer
)
При решении хотелось бы воспользоваться уже готовым
представлением catalog_v, просто наложив ограничения на строки. Но в
этом представлении и название книги, и авторы находятся в одном
поле, к тому же в сокращенном виде. Очевидно, что поиск автора «Лев»
по полю «Л .Н. Толстой» не даст результата.
Можно было бы повторить в функции get_catalog запрос из catalog_v,
но это дублирование кода, что плохо. Поэтому расширьте
представление catalog_v, добавив в него дополнительные поля:
заголовок книги и полный список авторов.
Проверьте, что корректно обрабатываются пустые поля на форме.
Когда клиент вызывает функцию get_catalog, передает ли он в этом
случае пустые строки или неопределенные значения?