Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vzhledem k tomu, že vložený program SQL obsahuje kombinaci příkazů jazyka SQL a hostitele, nelze jej odeslat přímo kompilátoru pro hostitelský jazyk. Místo toho se kompiluje prostřednictvím vícekrokového procesu. I když se tento proces liší od produktu po produkt, postup je zhruba stejný pro všechny produkty.
Tento obrázek znázorňuje kroky potřebné ke kompilaci vloženého programu SQL.
Kompilace vloženého programu SQL zahrnuje pět kroků:
Vložený program SQL se odešle do předkompileru SQL, programovacího nástroje. Prekompiler prohledá program, najde vložené příkazy SQL a zpracuje je. Pro každý programovací jazyk podporovaný DBMS se vyžaduje jiný prekompiler. Produkty DBMS obvykle nabízejí předkompilátory pro jeden nebo více jazyků, včetně C, Pascal, COBOL, Fortran, Ada, PL/I a různých jazyků sestavení.
Prekompiler vytvoří dva výstupní soubory. Prvním souborem je zdrojový soubor, z něhož byly odstraněny vložené příkazy SQL. Na jejich místě prekompiler nahrazuje volání proprietárních rutin DBMS, které poskytují propojení za běhu mezi programem a DBMS. Názvy a volající sekvence těchto rutin jsou obvykle známy pouze předkompilerem a DBMS; nejsou veřejným rozhraním dbMS. Druhý soubor je kopie všech vložených příkazů SQL použitých v programu. Tento soubor se někdy označuje jako modul žádosti o databázi nebo DBRM.
Výstup zdrojového souboru z prekompileru se odešle do standardního kompilátoru pro programovací jazyk hostitele (například kompilátor C nebo COBOL). Kompilátor zpracovává zdrojový kód a vytváří kód objektu jako jeho výstup. Všimněte si, že tento krok nemá nic společného s DBMS nebo s SQL.
Linker přijímá objektové moduly generované kompilátorem, propojí je s různými rutinami knihovny a vytvoří spustitelný program. Rutiny knihovny propojené se spustitelným programem zahrnují proprietární rutiny DBMS popsané v kroku 2.
Modul žádosti o databázi vygenerovaný předkompilerem se odešle do speciálního nástroje pro vazby. Tento nástroj prozkoumá příkazy SQL, parsuje, ověřuje a optimalizuje a pak vytvoří plán přístupu pro každý příkaz. Výsledkem je kombinovaný plán přístupu pro celý program, který představuje spustitelné verze vložených příkazů SQL. Nástroj vazby uloží plán do databáze, obvykle ho přiřadí název aplikačního programu, který ho bude používat. Zda se tento krok provádí v době kompilace nebo běhové době, závisí na DBMS.
Všimněte si, že kroky použité ke kompilaci vloženého programu SQL velmi úzce korelují s kroky popsanými výše v části Zpracování příkazu SQL. Všimněte si zejména, že prekompiler odděluje příkazy SQL od kódu jazyka hostitele a nástroj vazby parsuje a ověřuje příkazy SQL a vytváří plány přístupu. V DBMSs, kde se v době kompilace provádí krok 5, probíhá první čtyři kroky zpracování příkazu SQL v době kompilace, zatímco poslední krok (spuštění) probíhá za běhu. To má vliv na velmi rychlé provádění dotazů v takových dbMS.