Назначение встроенного SQL
Встроенный SQL предназначен для объединения возможностей языка программирования высокого уровня C/C++ с возможностями языка баз данных SQL СУБД ЛИНТЕР. Он позволяет выполнять любой SQL-оператор из прикладной программы. Для этого SQL-операторы непосредственно встраиваются в текст программы на C/C++ в соответствии с синтаксическими правилами встроенного языка. В результате получение исполняемого кода программы распадается на следующие этапы:
-
прекомпиляция с использованием прекомпилятора (препроцессора), входящего в состав СУБД ЛИНТЕР, исходного текста программы (отдельного модуля), содержащего конструкции встроенного SQL. Прекомпилятор заменяет конструкции встроенного SQL либо операторами языка C/C++, либо вызовами соответствующих функций библиотеки прекомпиляторного интерфейса. Результатом прекомпиляции является исходный текст программы, содержащей только конструкции языка C/C++. Так, например, конструкция встроенного SQL
EXEC SQL PREPARE ST FROM :Query;
будет заменена на
PCI_NewVar((char *)&Query,200,1,0,2,(int *) 0); #define PCI_STAT_TEXT \ ":v1;" PCI_Prepare(DdbPCI_,4096,&PCISt[0],0x0,PCI_STAT_TEXT); Fill_SQLca((char *)&sqlca); if (ErrPCI_ > 0 && ErrPCI_ != ErrPCI_NotFound) goto err_read; #undef PCI_STAT_TEXT
-
компилирование полученного текста программы (модуля) стандартным компилятором C/C++, результатом чего будет объектный код программы (модуля). Если программа (модуль) не содержит конструкции встроенного SQL, то они компилируются только компилятором C/C++;
-
компоновка всех объектных модулей программы (создание библиотеки) совместно с библиотекой встроенного SQL (поставляемой в дистрибутиве СУБД ЛИНТЕР) и системными библиотеками, результатом будет исполняемый код программы или библиотека.