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 BE разработана таким образом, чтобы максимально соответствовать этому стандарту, и обычно можно сравнительно легко перенести встроенные программы SQL, написанные для других баз данных на языке SQL, на Tantor BE.
Как уже упоминалось, программы, написанные для встроенного интерфейса 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-операторы.