PL/pgSQL (Procedural Language/PostgreSQL) – это расширение для создания хранимых процедур, функций и триггеров в системе управления базами данных PostgreSQL. Он позволяет выполнять сложные операции, используя привычные конструкции программирования, такие как условные выражения, циклы и исключения. Начать изучение PL/pgSQL можно с простых проектов, которые иллюстрируют базовые концепции и возможности языка.
Примеры простых проектов для новичков в PL/pgSQL:
1. **Функция для расчёта факториала числа**
Создание функции, возвращающей факториал переданного ей числа, поможет понять основы синтаксиса и работы с функциями в PL/pgSQL.
2. **Функция для конвертации температуры**
Преобразование температуры из Цельсия в Фаренгейты и обратно. Это простой пример, который показывает, как передавать параметры в функции и возвращать результат.
3. **Функция для вычисления N-го числа Фибоначчи**
Написать функцию, которая принимает на вход номер и возвращает соответствующее число Фибоначчи. Это задание поможет научиться пользоваться условными конструкциями и циклами.
4. **Создание триггера для проверки данных**
Написание триггера, который будет срабатывать при добавлении или изменении записей в таблице, например, проверять корректность email или запрещать ввод отрицательных значений для определённых числовых полей.
5. **Функция для пагинации данных**
Создать функцию, которая возвращает определённое количество записей с учетом смещения, например, для использования в приложении с постраничным выводом данных.
6. **Система управления инвентарём**
Создать набор функций для управления товарами на складе: добавление, удаление, изменение количества товаров и получение информации о наличии.
7. **Банковская система для проведения транзакций**
Реализовать функции для перевода средств между счетами, включая проверку баланса и запись транзакций в журнал операций.
Для демонстрации работы с PL/pgSQL напишем простую функцию вычисления факториала. Поскольку среды фиддл для PL/pgSQL, как правило, нет, код можно запустить на своей локальной машине или использовать онлайн-инструменты, такие как db-fiddle.com, которые поддерживают PostgreSQL.
```sql
-- Создание функции для вычисления факториала
CREATE FUNCTION calculate_factorial(num bigint) RETURNS bigint AS $$
DECLARE
result bigint = 1;
i bigint;
BEGIN
IF num < 0 THEN
RAISE EXCEPTION 'Negative numbers are not allowed.';
END IF;
FOR i IN 1..num LOOP
result := result * i;
END LOOP;
RETURN result;
END;
$$ LANGUAGE plpgsql;
-- Вызов функции
SELECT calculate_factorial(5); -- Результат: 120
```
Не забудьте, что научиться работать с PL/pgSQL удобнее всего на практических задачах, которые относятся к реальным проектам или бизнес-логике, с которой вы можете столкнуться. Удачного обучения!