Sobes.tech
Middle

Rozdiel medzi dynamickým a statickým SQL, výhody a nevýhody dynamického

sobes.tech AI

Odpoveď od AI

Statické SQL — sú SQL dopyty, ktoré sú úplne definované v štádiu kompilácie programu. Počas behu sa nemenia, parametre sa odovzdávajú cez väzby.

Dynamické SQL — sú SQL dopyty, ktoré sa formujú a vykonávajú počas behu programu, napríklad pomocou reťazcových konkatenácií alebo špeciálnych API (napríklad EXECUTE IMMEDIATE).

Výhody dynamického SQL:

  • Flexibilita: je možné tvoriť dopyty s rôznou štruktúrou v závislosti od podmienok.
  • Umožňuje vykonávať dopyty, ktoré nie je možné predvídať vopred.

Nevýhody dynamického SQL:

  • Riziko SQL injekcie, ak parametre nie sú správne používané.
  • Strata výhod optimalizácie, pretože plán dopytu nemusí byť cache-ovaný.
  • Ťažšie na ladenie a údržbu.

Statické SQL je bezpečnejšie a efektívnejšie, ale menej flexibilné.

Príklad dynamického SQL v 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('Počet: ' || v_count);
END;