33.1. Концепция#

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-операторы.