33.1. Концепция#
33.1. Концепция #
Программа на встроенном SQL состоит из кода, написанного на обычном
языке программирования, в данном случае на C, смешанного с SQL-командами в
специально отмеченных секциях. Для построения программы исходный код (*.pgc
)
сначала проходит через препроцессор встроенного SQL, который преобразует его
в обычную программу на C (*.c
), а затем его можно обработать компилятором C.
(Подробнее о компиляции и связывании см. Раздел 33.10).
Преобразованные приложения ECPG вызывают функции в библиотеке libpq
через библиотеку встроенного SQL (ecpglib) и общаются с
сервером PostgreSQL с использованием нормального протокола frontend-backend.
Встроенный SQL имеет преимущества по сравнению с другими методами обработки команд SQL из кода на языке C. Во-первых, он позволяет избежать трудоемкой передачи информации в переменные вашей программы на языке C. Во-вторых, код SQL в программе проверяется на синтаксическую корректность на этапе сборки. В-третьих, встроенный SQL на языке C описан в стандарте SQL и поддерживается многими другими системами управления базами данных на языке SQL. Реализация Tantor SE-1C разработана таким образом, чтобы максимально соответствовать этому стандарту, и обычно можно сравнительно легко перенести встроенные программы SQL, написанные для других баз данных на языке SQL, на Tantor SE-1C.
Как уже упоминалось, программы, написанные для встроенного интерфейса SQL, являются обычными программами на языке C с вставленным специальным кодом для выполнения действий, связанных с базой данных. Этот специальный код всегда имеет следующую форму:
EXEC SQL ...;
Эти операторы синтаксически занимают место оператора на языке C. В зависимости от конкретного оператора, они могут появляться на глобальном уровне или внутри функции.
Встроенные SQL операторы следуют правилам регистра символов обычного SQL кода, а не правилам языка C. Они также позволяют вложенные комментарии в стиле C в соответствии со стандартом SQL. Часть программы на языке C, однако, следует стандарту C и не принимает вложенные комментарии. Встроенные SQL операторы также используют правила SQL, а не правила C, для разбора строк и идентификаторов в кавычках . (См. Раздел 4.1.2.1 и Раздел 4.1.1 соответственно. Обратите внимание, что ECPG предполагает, что standard_conforming_strings
установлен в значение on
). Конечно, часть программы на языке C следует правилам цитирования C.
Следующие разделы объясняют все встроенные SQL-операторы.