← К оглавлению занятия

🐛 Ошибки

📁 Блок: SQL / MySQL / Пользовательские функции ⏱️ Время изучения: ~90 мин 🎯 Сложность: Продвинутая

⚡ Кратко: 🐛 ошибки

Пользовательская функция в MySQL создаётся командой CREATE FUNCTION и возвращает одно значение.

Функция объявляет параметры, тип результата через RETURNS, тело между BEGIN и END, а результат отдаёт через RETURN.

Для MySQL в учебных примерах используется DELIMITER //, чтобы точки с запятой внутри тела не завершали весь скрипт раньше времени.

Ключевое свойство DETERMINISTIC означает, что при одинаковых входных данных функция возвращает одинаковый результат.

Минимальный пример: SELECT square_root(25); после создания функции square_root(x DOUBLE) вернёт квадратный корень.

Топ-3 ошибки: забыть DELIMITER, не указать RETURNS, использовать функцию с текущей датой как DETERMINISTIC без проверки документации.

🐛 Типичные ошибки

1

Забыли вернуть разделитель

Симптом: После DELIMITER // следующий обычный SQL может не выполняться ожидаемо.

Исправление: В конце функции пишите DELIMITER ;.

2

Не указали тип результата

Симптом: MySQL выдаёт ошибку создания функции.

Исправление: Всегда добавляйте RETURNS return_datatype сразу после параметров.

3

Перепутали функцию и процедуру

Симптом: Ожидаете изменения таблицы, а функция должна вернуть одно значение.

Исправление: Для одного значения используйте функцию; для процесса с действиями — процедуру.

4

Неверно объявили детерминированность

Симптом: Функция зависит от текущей даты или времени, но объявлена как повторяемая.

Исправление: Проверяйте правила MySQL и помечайте такие случаи блоком документации.