Создание словаря БД
Назначение
Создание словаря БД.
Синтаксис
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");
}