Skip to content

Когда использовать PL/SQL

PL/SQL нужно использовать, когда:

  • Нужно скрыть функционал за общим интерфейсом(инкапсуляция)
  • Возможностей SQL недостаточно
  • Реализация на PL/SQL будет более сопровождаемой

Коротко по каждому из пунктов.

Инкапсуляция

Мы можем создать функцию, либо хранимую процедуру, после чего различные клиенты смогут воспользоваться ими, не зная деталей реализации функционала.

Недостаточно возможностей SQL

Здесь лучше подойтет пример. Предположим, нам нужно реализовать логику:

  1. Если значение некоего параметра, назовем его `quantity`, больше 100, то:
  2. Удалить некоторые строки из таблицы A.
  3. Иначе:
  4. Изменить некоторые строки в таблице B

Пункты 2 и 3 легко реализуются на чистом SQL. Связки 1-2 и 3-4 также можно реализовать на SQL, но условное выполнение 2 либо 4 возможно только при добавлении возможностей ветвления PL/SQL.

Сопровождаемость

В один монстрообразный SQL-запрос можно засунуть много сложной логики, и в целом так и нужно поступать, но лишь до тех пор, пока ты уверен, что он:

  • Понятен
  • Будет понятен через полгода
  • Тестируем

Если есть сомнения, лучше разделить функционал на более простые части(используя хранимые процедуры, например) и реализовать каждую из них отдельно.