Коротко о подключении к FireBird.

Раз для запуска CGI на BlackBox берем хостинги, дающие право root, то вместо mySQL можем использовать более функциональную
и известную в среде программистов на Паскале СУБД Firebird.

В СУБД Firebird есть препроцессор GPRE. Он позволяет изменять программу, набранную на Си вместе со вставками SQL (где могут использоваться переменные из программы на Си),
преобразовывать в программу на Си с заменой вставок SQL на вызовы функций API Firebird. При этом SQL команды транслируются на стадии разработки, в отличие от других методов,
где требуются дополнительные затраты времени на трансляцию SQL команд динамически во время работы пользователя (в runtime).

Полученный файл можно слинковать в виде динамической библиотеки .so.

Код на Си должен быть минимальным (получение параметров - работа с SQL - отправка параметров),
так как основная логика работы должна быть в BlackBox.

Тогда можно будет делать свои функции в своей библиотеке для

1. Подключения/отключения базы данных
2. Запуска/завершения/отката одной или нескольких разных транзакций
3. Команд по созданию/изменению/удалению элементов БД (CREATE/ALTER/DROP)
4. вставке записей (INSERT)
5. обновлению записей (UPDATE)
6. удалению записей (DELETE)
7. однострочной выборке (например, SELECT MIN(cost))
8. Инициализации/удалению курсора для многострочной выборки
9. Извлечению одной записи из многострочной выборки

Эти функции можно делать шаблонно, в принципе можно даже сделать генератор таких библиотек.
С другой стороны, опыт изготовления таких библиотек и подключение к BB даст уверенность и понимание при
подключении других сишных программ к своей программе на BlackBox.

Исходный код GPRE открыт (в составе Firebird), так что со временем кодогенерацию (backend) с не очень большими трудозатратами
можно переделать для BlackBox, чтобы совсем исключить использование Си в дальнейшем
и иметь возможность писать код на BlackBox со вставками SQL команд.

Специально для веб - приложений в Firebird есть такое удобство - если многострочный запрос возвращает слишком много строк,
то можно указывать, с какой строки по какую выбирать, память резервируется только для этого диапазона.