Sobes.tech
Назад к вопросам
Middle
10

Разница между динамическим и статическим SQL, плюсы и минусы динамического

Компании, где спрашивали
МВидео/эльдорадо

Ответ от нейросети

sobes.tech AI

Статический SQL — это SQL-запросы, которые полностью определены на этапе компиляции программы. Они не меняются во время выполнения, параметры передаются через привязки.

Динамический SQL — это SQL-запросы, которые формируются и выполняются во время выполнения программы, например, с помощью строковых конкатенаций или специальных API (например, EXECUTE IMMEDIATE).

Плюсы динамического SQL:

  • Гибкость: можно формировать запросы с разной структурой в зависимости от условий.
  • Позволяет выполнять запросы, которые невозможно заранее предсказать.

Минусы динамического SQL:

  • Риск SQL-инъекций, если не использовать параметры корректно.
  • Потеря преимуществ оптимизации, так как план запроса может не кэшироваться.
  • Сложнее отлаживать и поддерживать.

Статический SQL более безопасен и эффективен, но менее гибок.

Пример динамического SQL в PL/SQL:

DECLARE
  v_sql VARCHAR2(1000);
  v_table_name VARCHAR2(30) := 'EMPLOYEES';
BEGIN
  v_sql := 'SELECT COUNT(*) FROM ' || v_table_name;
  EXECUTE IMMEDIATE v_sql INTO v_count;
  DBMS_OUTPUT.PUT_LINE('Count: ' || v_count);
END;