„Vnitřní“ programovací konstrukce (Embedded SQL) - procedurální prostředky v rámci jazyka SQL

Přímý přístup programovacího jazyka do databázových struktur – jazyk (překladač) je obohacený o konstrukce pro SQL

Je metoda vkládání řádkových SQL příkazů do kódu programovacího jazyka, protože tento programovací jazyk neumí parsovat SQL. Vkládané SQL je parsováno v SQL preprocesoru.

SQL dotazy jsou psány přímo ve zdrojovém kódu. Syntaxe SQL je přizpůsobena syntaxi daného programovacího jazyka.

Před kompilací programu se musí zdrojový kód zpracovat preprocesorem Embedded SQL, kdy SQL dotazy jsou nahrazeny odpovídajícím kódem programovacího jazyka.

Nejčastěji v kombinaci s jazyky C/C++.

Microsoft SQL Server (starší verze podporovali C)

Příklad syntaxe

Notice that the steps used to compile an embedded SQL program correlate very closely with the steps described earlier in Processing an SQL Statement. In particular, notice that the precompiler separates the SQL statements from the host language code, and the binding utility parses and validates the SQL statements and creates the access plans. In DBMSs where step 5 takes place at compile time, the first four steps of processing an SQL statement take place at compile time, while the last step (execution) takes place at run time. This has the effect of making query execution in such DBMSs very fast.

 Procedurální prostředky SQL (procedurální rozšíření SQL)

SQL bylo původně navrženo pro získávání dat z relačních databází. SQL je deklarativní jazyk a ne imperativní, jako například C nebo Java.

Dodavatelům DB systémů možnosti SQL nedostačovaly a tak si začali implementovat vlastní procedurální rozšíření SQL.

příklad: kursory, bloky,  proměnné

Šetření komunikačního kanálu

Menší množství odesílaných povelů

v jednom povelu je větší množství příkazů

Podstatně menší objem přenesených dat - Data se zpracují na serveru bez přenosu na klienta

Odlehčení klienta - Možnost ukládat a vykonávat kód na serveru

Na co si dát při návrhu pozor

Hlídat na úrovni databáze všechny manipulace s daty, které ohlídat jdou

Cokoli jde zadat uživatelem špatně, bude zadáno špatně

Později je čištění nekonzistentních dat namáhavé a opravy často nemožné

Lépe ohlídat vše

Procedurální rozšíření v SQL:1999

SQL:1999 standardizuje procedurální rozšíření. Rozšíření se jmenuje SQL/PSM - SQL/Persisted Stored Modules. Nikdo to moc nedodržuje a všichni si dělají vlastní standardy/implementace

řídící konstrukce - cykly, větvení, přiřazení

Vlastní (proprietární) rozšíření
