Создание словаря БД
Назначение
Создание словаря БД.
Синтаксис
L_LONG LinDatabaseControl(t_LINDBCtrl* LINDBCtrl, LIN_DATABASE_DICT, L_LONG Flags, char* UserPassword [,char *AddComand]);
Входные данные
Входными данными являются:
-
инициализированная управляющая структура LINDBCtrl;
-
идентификатор LIN_DATABASE_DICT команды «Создание словаря БД»;
-
флаги Flags, модифицирующие поведение команды;
-
UserPassword – регистрационные данные пользователя БД;
-
дополнительные параметры AddCommand для утилит inl и loarel, а также для самой команды. Максимальная длина передаваемой утилите inl строки не должна превышать 1024 байт.
Допустимые флаги:
Флаг | Значение | |
---|---|---|
LIN_DATABASE_DICT_NAME | В строке аргумента AddCommand содержится второй дополнительный параметр с указанием пути к sql-скрипту словаря БД |
Выходные данные
Выходными данными является управляющая структура LINDBCtrl.
В управляющей структуре будут возвращены:
Имя поля | Значение | |
---|---|---|
RetStatus | Код завершения | |
SysStatus | Системный код завершения |
Описание
В режиме по умолчанию (аргумент Flags не задан) функция выполняет следующие действия:
-
определяет путь к установочному каталогу СУБД ЛИНТЕР (извлекается из поля LinterPath управляющей структуры LINDBCtrl).
-
запускает утилиту inl для обработки sql-скриптов создания словарей БД.
Для успешного запуска inl должны выполняться условия:
-
утилита находится в подкаталоге
/bin
установочного каталога СУБД ЛИНТЕР; -
имя пользователя БД и его пароль, под которыми запускается утилита inl, должны быть заданы в аргументе UserPassword в формате
< Пользователь >/< Пароль >
, например,"Петров"/123
-
sql-скрипты для создания словарей БД находятся в подкаталоге
/dict
установочного каталога СУБД ЛИНТЕР.
-
-
запускает утилиту loarel для загрузки данных в некоторые словари.
Для успешного запуска loarel должны выполняться условия:
-
утилита находится в подкаталоге
/bin
установочного каталога СУБД ЛИНТЕР; -
имя пользователя БД и его пароль, под которыми запускается утилита loarel, должны быть заданы в аргументе UserPassword (используются те же значения, что и при запуске утилиты inl);
-
файлы загрузки словарей находятся в подкаталоге
/dict
установочного каталога СУБД ЛИНТЕР.
Флаг
LIN_DATABASE_DICT_NAME
изменяет используемый по умолчанию алгоритм поиска данных для выполнения команды. Если флаг установлен, то в аргументе AddCommand должна быть задана спецификация местоположения единственного sql-скрипта для исполнения. При этом:-
если в спецификации нет символа «/», то предполагается, что это имя одного конкретного sql-скрипта, который должен быть выполнен для создания (или модификации) таблицы словаря. Этот файл будет искаться в подкаталоге
/dict
установочного каталога СУБД ЛИНТЕР.
Пример аргументов с установленным флагом
LIN_DATABASE_DICT_NAME
:LINDBCtrl, LIN_DATABASE_DICT, LIN_DATABASE_DICT_NAME, "SYSTEM/MANAGER8", "cerrors.sql"
-
если в спецификации присутствует хотя бы один символ «/», то предполагается, что это полный или относительный путь к sql-скриптам создания словаря БД:
LINDBCtrl, LIN_DATABASE_DICT, LIN_DATABASE_DICT_NAME, "SYSTEM/MANAGER8", "./1.sql"
-
Возвращаемые значения
Функция возвращает:
-
0
– нормальное завершение; -
-1
– словарь БД не создан.
Коды завершения
Код | Описание | |
---|---|---|
E_LINCTRL_INL | Неудачное завершение утилиты inl | |
E_LINCTRL_LOAREL | Неудачное завершение утилиты loarel | |
E_LINCTRL_RUN | Неудачный запуск утилиты inl или loarel | |
E_LINCTRL_NOMEM | Невозможность выделения динамической памяти для полей управляющей структуры LINDBCtrl |
Пример
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "linctrl.h" #include "exlib.h" void PrintError(t_LINDBCtrl *LINDBCtrl); void main() { t_LINDBCtrl LINDBCtrl; CHAR LinterPath[]="/usr/linter"; char UserPassword = “SYSTEM/MANAGER8”; CHAR AddCommand[]="cerrors.sql" LONGINT Err; Err=LINDBCtrlInit(&LINDBCtrl,LinterPath); if (Err != NORMAL) PrintError(&LINDBCtrl); printf("Initialisation LINDBCtrl\n"); Err= LinDatabaseControl (LINDBCtrl, LIN_DATABASE_DICT, LIN_DATABASE_DICT_NAME, USerPAssword, AddCommand); If (Err != NORMAL) PrintError(&LINDBCtrl); printf("Create dictionary\n"); printf("End Example\n"); }