Функции в PostgreSQL - это объекты базы данных, принимающие аргументы и возвращающие результат.
Они полезны для взаимодействия клиентского кода с базой данных.
Функции позволяют разграничить работу между фронтенд и сервер-сайт разработчиками.
Функции компилируются и хранятся на стороне базы данных, что делает их вызов дешевым.
Они позволяют переиспользовать код между клиентскими приложениями.
Функции управляют безопасностью и снижают трафик на сеть.
Функции поощряют модульное программирование, так как они являются модулями.
Они могут содержать селекты, инсерты, апдейты и делит.
Функции транзакционны по умолчанию, и секции begin и end работают как сейфы.
Функции делятся на SQL и процедурные.
Основной диалект - SQL, но также есть серверные функции на C и собственные функции.
В этом курсе рассматриваются SQL и процедурные функции.
Простейший синтаксис: create function, имя функции, аргументы, return type, body.
Тело функции может быть заключено в символы доллара или кавычки.
Можно использовать replace function для модификации существующей функции.
Создание первой функции без параметров.
Пример использования функции для изменения данных в таблице.
Создание функции для клиентского кода, чтобы избежать дублирования кода.
Демонстрация вызова функции из кода.
Пример функции, которая ничего не возвращает.
Проверка обновления данных в таблице.
Объяснение скалярных функций, возвращающих одно значение.
Пример функции для подсчета количества товаров.
Пример функции для расчета средней цены по продуктам.
Введение в функции с аргументами.
Различие между входящими и исходящими аргументами.
Использование ключевого слова "in" для входящих аргументов.
Объяснение массива входящих параметров.
Пример использования ключевого слова "in".
Присвоение значений по умолчанию для аргументов.
Создание функции для фильтрации продуктов по имени.
Пример использования функции для получения цены продукта.
Пример функции для получения границ цен среди всех товаров.
Важность порядка аргументов в SQL-функциях.
Пример функции для получения минимальной и максимальной цен.
Возможность создания более сложных функций для отчетности.
Функция может возвращать несколько значений в разных колонках.
Использование селекта для получения конкретных значений.
Параметры могут быть как входными, так и выходными.
Функция возвращает границы цены по дисконтини.
Использование аргумента дисконтини для поиска.
Пример вызова функции с передачей аргумента.
Добавление дефолтного значения для аргумента.
Пример использования дефолтного значения для снижения нагрузки на клиентский код.
Демонстрация работы функции с дефолтным значением.
Способы возврата множественных данных из функций.
Использование синтаксиса set of для возврата скалярных значений.
Применение record set для возврата всех столбцов из таблицы.
Рекомендации по использованию различных методов возврата данных.
Пример создания функции для возврата средних цен по категориям продуктов.
Использование record set для возврата нескольких значений.
Проверка работы SELECT в функции.
Имена колонок должны быть заселектированы для корректной работы.
Использование псевдонимов для упрощения работы.
OUT параметры возвращают одну строку с двумя параметрами.
OUT RECORD позволяет возвращать множественные записи с разным количеством аргументов.
Использование OUT RECORD без OUT параметров требует явного указания столбцов в SELECT.
Функции, возвращающие записи, требуют явного указания столбцов в SELECT.
Использование SELECT с указанием аргументов и типов данных.
Избегать таких функций по возможности.
RETURN TABLE позволяет возвращать данные из таблицы.
Пример функции для возврата клиентов по стране.
Важность точного указания столбцов и типов данных в SELECT.
RETURN TABLE OF TABLE позволяет возвращать данные из конкретной таблицы.
Использование SELECT STAR для получения всех данных.
Возможность назначения псевдонимов для упрощения работы.
Понимание семантики и смысла различных видов возврата из функций.
Выбор подходящего синтаксиса в зависимости от задачи и удобства отладки.