Статический SQL встраивается в виде препроцессорной обработки в традиционные языки программирования.
Операторы SQL обрабатываются прекомпилятором.
В SQL-операторах могут использоваться переменные из прикладной программы.
Операторы:
DECLARE CURSOR определяет запрос
OPEN и CLOSE начинает и завершает процесс обработки.
Приведем пример приложения, использующего статический SQL:
| main() // Включение структуры для обработки ошибок { EXEC SQL INCLUDE SQLCA; // Объявление хост-переменных (связи и INTO-переменные) EXEC SQL BEGIN DECLARE SECTION;
|
| int NumIndID; int NumID;
| // Эти переменные // указываются после символа :
|
| char Sal[10]; EXEC SQL END DECLARE SECTION; // Обработка ошибок EXEC SQL WHENEVER SQLERROR GOTO err_1; EXEC SQL WHENEVER NOT FOUND GOTO err_2; // Запрос параметров printf ("Type individual number: "); scanf("%d",&NumIndID); // Выполнение SQL запроса EXEC SQL SELECT NumID, Sal FROM tbl1 WHERE NumIndID =: NumIndID INTO :NumID, :Sal; // Отображение результата std::cout<< "Number: "<<NumID; exit(0); err_1: std::cout<<'' SQLERROR''; exit(1); err_2: std::cout<<'' NOT FOUND"; exit(1); }
|
Типы данных преобразуются автоматически для каждой СУБД.
СУБД возвращает информацию об ошибках через специальные переменные: структуру SQL Communication AREA (SQLCA), переменную SQLSTATE или SQLCODE.
Теперь рассмотрим более подробно синтаксис языка встроенного SQL.
Фактически, чтобы приложение могло обращаться к базе данных, существуют четыре основных варианта:
- встраивание в код некоторого языка программирования SQL-операторов (статический SQL);
- формирование в процессе выполнения программы на некотором языке программирования кода SQL-операторов и дальнейшего их выполнения (динамический SQL);
- вызов из программ, выполненных на других языках программирования, SQL-модулей, которые представляют собой код на языке SQL;
- использование API (Application Programming Interface), позволяющего реализовывать работу с базой данных через предоставляемый набор функций. API может быть целевым, предоставленным производителем коммерческой СУБД для работы именно с этой базой данных, или межплатформенным, реализующим унифицированные средства доступа к СУБД различных производителей. К такому API относятся ODBC (Open DataBase Connectivity) и SQL/CLI (SQL Call Level Interface).