Программа со внедренным SQL состоит из кода, написанного на обычном языке программирования (в данном случае C), в сочетании с SQL-командами в специально отмеченных разделах. Для сборки программы исходный код (*.pgc)
сначала пропускается через препроцессор внедренного SQL, который преобразует его
в обычную программу на языке C (*.c), после чего она может быть обработана компилятором языка C. (Подробности о компиляции и компоновке см. в Раздел 4.3.10.)
Преобразованные приложения препроцессора ECPG вызывают функции библиотеки libpq
через библиотеку внедренного SQL (библиотека ecpglib) и взаимодействуют с
сервером PostgreSQL, используя стандартный протокол взаимодействия frontend-backend.
Внедренный SQL SQL имеет преимущества перед другими методами обработки SQL команд из кода на языке C. Во-первых, он берет на себя трудоемкую передачу данных в переменные и из переменных в вашей C программа на языке C. Во-вторых, SQL-код в программе проверяется во время сборки на предмет синтаксической корректности. В-третьих, внедренный SQL на языке C определен в SQL стандарте и поддерживается многими другими SQL системами баз данных. Данная Digital Q.DataBase реализация разработана таким образом, чтобы максимально соответствовать этому стандарту, и обычно возможен перенос внедренных SQL программ, написанных для других баз данных SQL, в Digital Q.DataBase с относительной легкостью.
Как уже отмечалось, программы, написанные для интерфейса внедренного SQL SQL, представляют собой обычные программы на языке C со специальным кодом, вставленным для выполнения действий, связанных с базой данных. Этот специальный код всегда имеет следующий вид:
EXEC SQL ...;
Эти операторы синтаксически занимают место оператора языка C. В зависимости от конкретного оператора, они могут располагаться на глобальном уровне или внутри функции.
Внедренные
SQL операторы следуют правилам чувствительности к регистру
обычного SQL кода, а не языка C. Кроме того, они допускают вложенные комментарии в стиле C согласно стандарту SQL. Однако часть программы на языке C следует стандарту C, не допускающему вложенные комментарии. Внедренные SQL операторы аналогичным образом используют правила SQL, а не правила C, для разбора строк в кавычках и идентификаторов. (См. Раздел 2.1.1.2.1 и
Раздел 2.1.1.1 соответственно. Обратите внимание, что
препроцессор ECPG предполагает, что standard_conforming_strings
является включенным.)
Разумеется, часть программы на языке C следует правилам использования кавычек C.
В следующих разделах описываются все операторы внедренного SQL.