Добавить в корзинуПозвонить
Найти в Дзене
Oracle Developer

%ROWTYPE и %TYPE в PL/SQL: скрытые нюансы, которые должен знать каждый разработчик 🔥

Программисты Oracle знают: код должен быть не только рабочим, но и поддерживаемым. А теперь представьте, что вы изменили тип столбца в таблице, а затем ловите неожиданные ошибки в PL/SQL-коде. Знакомо? Вот тут-то на сцену выходит объявление с привязкой. Объявление с привязкой — это тип данных, который ссылается на конкретный объект в базе. Например, на столбец таблицы, переменную или курсор. Используются два основных варианта привязки: ✅ Синхронизация с базой — таблицы меняются, но ваш PL/SQL-код остаётся актуальным.
✅ Нормализация типов данных — источник типа один, что снижает вероятность ошибок при изменениях.
✅ Читаемость кода — сразу видно, откуда «взят» тип переменной. Некоторые разработчики считают, что привязка через %TYPE делает код «слишком гибким». Это действительно может быть проблемой, если структура БД меняется часто, а перекомпиляция кода занимает время. Поэтому применять стоит обдуманно. -- Объявление переменной типа строки таблицы
dept_record dep%ROWTYPE;
-- Параметры
Оглавление

Программисты Oracle знают: код должен быть не только рабочим, но и поддерживаемым. А теперь представьте, что вы изменили тип столбца в таблице, а затем ловите неожиданные ошибки в PL/SQL-коде. Знакомо? Вот тут-то на сцену выходит объявление с привязкой.

Что это такое?

Объявление с привязкой — это тип данных, который ссылается на конкретный объект в базе. Например, на столбец таблицы, переменную или курсор. Используются два основных варианта привязки:

  • %ROWTYPE — привязывается к строке таблицы или курсора.
  • %TYPE — берёт тип данных из конкретного столбца таблицы или переменной.
-2

В чём фишка? 🤔

  • Привязка происходит на стадии компиляции, а не во время выполнения.
  • Код автоматически подстраивается под изменения в БД. Обновили тип данных в таблице? Все переменные и параметры в коде автоматически «подтянутся».
  • Нет накладных расходов при выполнении — код работает так же быстро, как если бы тип был указан явно.
  • Но есть нюанс: если привязываемый элемент изменится, код станет INVALID. Его придётся перекомпилировать.
  • Ограничения и default-значения столбцов не передаются в переменные — это важно учитывать!

Где пригодится?

Синхронизация с базой — таблицы меняются, но ваш PL/SQL-код остаётся актуальным.
Нормализация типов данных — источник типа один, что снижает вероятность ошибок при изменениях.
Читаемость кода — сразу видно, откуда «взят» тип переменной.

А когда стоит быть осторожнее? ⚠️

Некоторые разработчики считают, что привязка через %TYPE делает код «слишком гибким». Это действительно может быть проблемой, если структура БД меняется часто, а перекомпиляция кода занимает время. Поэтому применять стоит обдуманно.

Как выглядит в коде? ✍️

-- Объявление переменной типа строки таблицы
dept_record dep%ROWTYPE;

-- Параметры функции привязаны к колонкам таблицы
FUNCTION get_dep_name_by_id (p_id dep.id%TYPE) RETURN dep.name%TYPE IS
BEGIN
...
END;


Объявление с привязкой — мощный инструмент, который при правильном применении делает код
гибким, устойчивым к изменениям и читаемым. Главное — знать, когда его применять! 😉

----------

Хотите разбираться в таких вещах на экспертном уровне? На нашем YouTube-канале мы регулярно разбираем подобные темы, а в Telegram-канале можно задать вопросы и пообщаться с коллегами! Присоединяйтесь! 💡

А еще в нашей онлайн-школе мы проводим обучение по направлениям:🔸PL/SQL; 🔸оптимизация Oracle SQL; 🔸секционирование; 🔸архитектуре СУБД; 🔸Unit-тестированию и др.

Работаем как с физическими так и с юридическими лицами. Напишите в
нашу поддержку или Денису напрямую. Всё официально с возможностью получить налоговый вычет, использовать мат капитал или другие плюшки.

Лицензия на дополнительное образование взрослых и детей Л035-01199-54/01691393 выдана 13.01.2025 г. Министерством образование Новосибирской области Российской Федерации

🔗 Полезные ссылки:

#oracle #plsql #type #rowtype #разработка #базыданных #sql