Вбудований SQL () — це розширення мови програмування, яке дозволяє вбудовувати SQL-інструкції безпосередньо у початковий код програми, написаній цією мовою. Зазвичай код із вбудованими SQL-інструкціями перед компіляцією обробляється спеціальним препроцесором.
Реалізація У стандарті SQL мова програмування, в яку вбудовуються SQL-запити, називається хост-мовою (). Програма, яка написана хост-мовою та містить SQL-інструкції, зазвичай перед компіляцією має обробитися препроцесором, який як правило постачається виробником відповідної бази даних. Цей препроцесор замінює SQL-інструкції на директиви та команди хост-мови. Ці команди містять функції зі спеціальної бібліотеки, які дозволяють отримати доступ до бази даних.
Кожна вбудована SQL-інструкція має починатися з ключових слів EXEC SQL, а її закінчення залежить від конкретної хост-мови. Наприклад, для C/C++ вона матиме такий вигляд:
Щоб використовувати змінні хост-мови у вбудованій SQL-інструкції перед їх назвами у цій інструкції потрібно ставити двокрапку. Згідно зі стандартом SQL, щоб препроцесор міг зрозуміти, що певні змінні хост-мови можуть використовуватися у таких інструкціях, потрібно їх оголошувати між такими двома інструкціями вбудованого SQL: BEGIN DECLARE SECTION та END DECLARE SECTION. Однак існують препроцесори, які цього не вимагають, а можуть обробляти всі змінні у поданому початковому коді.
Передача значення NULL з вбудованої інструкції у змінну хост-мови та навпаки можлива завдяки змінної-індикатору типу integer, яка у SQL-інструкції розміщується після базової змінної. Якщо її значення від'ємне, то базова змінна містить NULL; якщо вона дорівнює нулю, то базова змінна містить змістовне значення, яке можна використовувати у програмі; якщо вона має додатне значення, то це свідчить про те, що при передачі значення базової змінної з нею відбулася певна деформація.
Для перевірки статусу виконання вбудованої SQL-інструкції можна використовувати спеціальну змінну SQLSTATE (у деяких програмах також може зустрічатися змінна SQLCODE, однак вона визнана застарілою). У разі виникнення помилки виконання додаткову інформацію про неї можна отримати за допомогою інструкції GET DIAGNOSTICS.
Якщо на момент створення програми невідомо, які саме змінні потрібні у SQL-запиті, то використовують спеціальну структуру sqlda або область дескриптора ().
Примітки
Література
Посилання Introduction to embedded SQL — IBM Documentation Embedded SQL — Oracle Help Center ECPG — PostgreSQL Documentation Embedded SQL in C — Mimer SQL Developer