Parametrizácia SQL príkazov a výrazov znamená symbolické zadanie hodnôt v SQL príkazoch a výrazoch a neskoršie
naplnenie parametrov konkrétnymi hodnotami.
Príklad parametrizovaného výrazu: " Id= #PAR# AND NAME LIKE #PAR# "
Príklad parametrizovaného príkazu: "SELECT Name, Surname FROM Persons WHERE Id= #PAR# AND Name LIKE #PAR# "
Existujú 3 spôsoby špecifikácie parametrov použiteľné v množine akcií procesu
D2000 DBManager:
Parametrizáciu môže použiť v SQL výraze vybraná množina akcií pracujúcich s databázou. Jedná sa o akcie:
Pokiaľ je SQL výraz parametrizovaný, akcia musí použiť kľúčové slovo BINDIN a za ním jedno z nasledujúcich:
Hodnoty parametrov sa nastavia podľa hodnôt uvedených za kľúčovým slovom BINDIN.
Parametrizáciu podporuje aj akcia SQL_PREPARE, ale v tomto prípade nie je zoznam hodnôt parametrov
súčasťou akcie. Uvedením kľúčového slova BINDOUT (namiesto BIND) sa špecifikuje, že SQL príkaz je parametrizovaný a následne sa volaním akcie
SQL_BINDIN nastavia hodnoty parametrov. Výhodou je, že pre získanie výsledkov s inými hodnotami parametrov
nie je potrebné znovu volať SQL_PREPARE, ale stačí zopakovať SQL_BINDIN
s novými hodnotami a následne je možné volať SQL_FETCH na získanie výsledkov.
Zmyslom parametrizácie je zrýchliť a uľahčiť prácu SQL databázy. Pri vyhodnocovaní SQL príkazu dochádza k jeho parsovaní a kompilácii. Pokiaľ
sa použije viackrát ten istý SQL príkaz, SQL databáza môže recyklovať už parsovaný a skompilovaný príkaz. Parametrizáciou možno napr. príkazy:
"SELECT Name FROM Person WHERE Id=1"
"SELECT Name FROM Person WHERE Id=5"
"SELECT Name FROM Person WHERE Id=100"
nahradiť jediným príkazom
"SELECT Name FROM Person WHERE Id= #PAR#"
a teda miesto troch SQL príkazov bude databáza parsovať a kompilovať iba jeden (a pri druhom a ďalších vykonávaniach ho môže recyklovať).
Pokiaľ sa použije parametrizácia pri volaní SQL_PREPARE a nastavenie parametrov viacnásobnou akciou
SQL_BINDIN, je zaručené, že parsovanie a kompilácia SQL príkazu prebehne iba raz (pri volaní
SQL_PREPARE).
Pokiaľ sa použije parametrizácia pri volaniach akcií DB(S)_DELETE, DB(S)_READ
alebo DB(S)_UPDATE, je vhodné upraviť parametre databázy (napr. Oracle: session_cached_cursors), aby
táto uchovávala (cachovala) dostatočné množstvo skompilovaných príkazov (kurzorov), aby medzi volaniami DB(S)_* príkazov zostali v kurzorovej cache.