Создание словаря БД

Назначение

Создание словаря БД.

Синтаксис
 
L_LONG LinDatabaseControl(t_LINDBCtrl* LINDBCtrl, LIN_DATABASE_DICT, L_LONG Flags, char* UserPassword [,char *AddComand]);
Входные данные

Входными данными являются:

  1. инициализированная управляющая структура LINDBCtrl;

  2. идентификатор LIN_DATABASE_DICT команды «Создание словаря БД»;

  3. флаги Flags, модифицирующие поведение команды;

  4. UserPassword – регистрационные данные пользователя БД;

  5. дополнительные параметры AddCommand для утилит inl и loarel, а также для самой команды. Максимальная длина передаваемой утилите inl строки не должна превышать 1024 байт.

Допустимые флаги:

Флаг Значение
LIN_DATABASE_DICT_NAME В строке аргумента AddCommand содержится второй дополнительный параметр с указанием пути к sql-скрипту словаря БД
Выходные данные

Выходными данными является управляющая структура LINDBCtrl.

В управляющей структуре будут возвращены:

Имя поля Значение
RetStatus Код завершения
SysStatus Системный код завершения
Описание

В режиме по умолчанию (аргумент Flags не задан) функция выполняет следующие действия:

  1. определяет путь к установочному каталогу СУБД ЛИНТЕР (извлекается из поля LinterPath управляющей структуры LINDBCtrl).

  2. запускает утилиту inl для обработки sql-скриптов создания словарей БД.

    Для успешного запуска inl должны выполняться условия:

    • утилита находится в подкаталоге /bin установочного каталога СУБД ЛИНТЕР;

    • имя пользователя БД и его пароль, под которыми запускается утилита inl, должны быть заданы в аргументе UserPassword в формате < Пользователь >/< Пароль >, например,

      "Петров"/123
    • sql-скрипты для создания словарей БД находятся в подкаталоге /dict установочного каталога СУБД ЛИНТЕР.

  3. запускает утилиту 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");
  }