Назначение встроенного SQL

Встроенный SQL предназначен для объединения возможностей языка программирования высокого уровня C/C++ с возможностями языка баз данных SQL СУБД ЛИНТЕР. Он позволяет выполнять любой SQL-оператор из прикладной программы. Для этого SQL-операторы непосредственно встраиваются в текст программы на C/C++ в соответствии с синтаксическими правилами встроенного языка. В результате получение исполняемого кода программы распадается на следующие этапы:

  1. прекомпиляция с использованием прекомпилятора (препроцессора), входящего в состав СУБД ЛИНТЕР, исходного текста программы (отдельного модуля), содержащего конструкции встроенного 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
  2. компилирование полученного текста программы (модуля) стандартным компилятором C/C++, результатом чего будет объектный код программы (модуля). Если программа (модуль) не содержит конструкции встроенного SQL, то они компилируются только компилятором C/C++;

  3. компоновка всех объектных модулей программы (создание библиотеки) совместно с библиотекой встроенного SQL (поставляемой в дистрибутиве СУБД ЛИНТЕР) и системными библиотеками, результатом будет исполняемый код программы или библиотека.