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-запрос можно засунуть много сложной логики, и в целом так и нужно поступать, но лишь до тех пор, пока ты уверен, что он:

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

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