NIL codb_close(<oDB>) oDB codb_connect() oRes codb_execute(<oDB>,<sQuery>,[<sDatabase>],[<aFiles>]) '' | 'ERROR' codb_get_answer(<oRes>) sName codb_get_column(<oRes>, <nIndex>) sError | NIL codb_get_error(<oRes>) oMetaobject codb_get_metaobject(<oDB>,<sID>,[<sDatabase>]) oObject codb_get_object(<oDB>,<sID>,[<sDatabase>]) aResult codb_get_result(<oRes>) nColumns codb_num_columns(<oRes>) nRows codb_num_rows(<oRes>) oResult codb_put_metaobject(<oDB>,<oContent>,[<sDatabase>],<sClass>) oResult codb_put_object(<oDB>,<oContent>,[<sDatabase>],<sClass>)
Библиотека codb-query предоставляет унифицированный способ работы с базами данным CODB посредством запросов вместо вызовов методов классов CODBDEPOSITORY, CODBDICTIONARY, CODBLIST и CODBIDLIST.
Запросы строятся на языке CQL (диалекте SQL, адаптированном для CODB). Вы можете задействовать эту библиотеку как программно, так и используя консольный клиент codb.
Использование в программах.
Для использования библиотеки codb-query в программах вы должны собрать свою программу с этой библиотекой. Укажите при сборке '-lcodb-query'.
Типичный сеанс работы состоит из следующих этапов:
db := codb_connect() // Подключение к базам данных e := codb_get_error( db ) // Проверка ошибок if e != NIL ?? "ERROR codb_connect(): " + e + chr(10) return 1 endif // Выполнение запроса oRes := codb_execute( db, 'show databases' ) // Обработка результата aResult := codb_get_result( oRes ) codb_close( db ) // Закрытие баз данных
Подключение к базам данных обеспечивает функция codb_connect(). При этом открываются все доступные базы данных. Закрытие баз данных обеспечивается функцией codb_close().
Собственно операции с базой данных обеспечивают функции: codb_execute(), codb_get_metaobject(), codb_get_object(), codb_put_metaobject(), codb_put_object().
Отличие этих функций в том, что codb_execute() возвращает объект, из которого собственно данные можно получить функцией codb_get_result(), а остальные функции оперируют готовыми объектами.
Для контроля ошибок используются функции codb_get_answer() и codb_get_error().
Результат запроса, полученный при выполнении codb_execute(), можно обработать, используя функции codb_get_result(), codb_num_columns(), codb_num_rows() и codb_get_column().
Кроме этого, результат можно получить в отформатированном виде. Для этого объект результата передаётся в метод 'show' объекта класса CODBFormatter().
Использование консоли codb.
codb [параметры] [словарь[:депозитарий]]При запуске codb без параметров, он будет работать в интерактивном режиме.
Параметры codb:
-c 'команда' - Выполнить запрос и выйти.
--hide-titles - Не показывать заголовки столбцов.
--delim='DELIM' - Установить разделитель между столбцами.
Полный перечень команд можно посмотреть, запустив codb -h.
Примеры:
codb ETC01 -c 'show classes;'Будет выведен список классов в базе данных ETC01.
codb ETC01:ETC0101 -c 'select * from mng_vendor,mng_author;' --delim='|'Будет выведены все поля объектов классов mng_vendor и mng_author из базы данных ETC01 и депозитария ETC0101 с разделителем '|'.
Примечание: данные выводятся в табличном виде, то есть поля дополняются пробелами до ширины максимального элемента.
Команды CQL.
Каждая команда должна заканчиваться точкой с запятой. Вы можете использовать комментарии, начинающиеся с символа '#' до конца строки (символа '\n'). Строки ограничиваются одинарными кавычками ('). При употреблении кавычки в строке она экранируется обратной косой чертой (\').
Вы можете также передать несколько команд как в параметре -c, так и через каналы:
echo 'show classes;show indexes;' | codb ETC01
Краткое описание команд CQL.
help - помощь по команде;
create - создать базу данных или метаобъект;
delete - удалить объект или метаобъект;
describe - показать структуру класса;
drop - удалить метаобъект по его имени;
get - получить содержимое объекта из депозитария;
metaget - получить метаобъект;
metaput - создать или изменить метаобъект;
put - создать или изменить объект в депозитарии;
select - получить список полей объектов;
show - показать список метаобъектов;
use - изменить текущую базу данных и депозитарий.
В интерактивном режиме доступна команда quit - выход из консоли. Вы можете также выйти из консоли, нажав клавишу Esc.
Подробное описание команд CQL:
help [<команда>] Помощь по команде. Если команда не указывается, показывается список доступных команд с их кратким описанием.
create <метакласс> (<поле1>=<значение1>[, ...]) или create database <имя> <путь> [<описание>] Создать базу данных или метаобъект. Примеры: create database EAS01 /var/lib/db 'База данных E/AS'; create attribute (name='phone',type='C',len=20);
Доступные классы метаобъектов:
depository - депозитарий;
extent - пространство имён;
attribute - атрибут;
counter - счётчик;
index - индекс;
class - класс;
tcolumn - столбец вида;
tview - вид;
report - отчёт;
plugin - подключаемый модуль;
user - пользователь;
group - группа пользователей.
delete <id> Удалить объект или метаобъект по его идентификатору.
describe <имя_класса> Показать структуру класса по его имени.
drop <метакласс> <имя_метаобъекта> Удалить метаобъект по его имени.
Доступные классы метаобъектов:
depository - депозитарий;
extent - пространство имён;
attribute - атрибут;
counter - счётчик;
index - индекс;
class - класс;
tcolumn - столбец вида;
tview - вид;
report - отчёт;
plugin - подключаемый модуль;
user - пользователь;
group - группа пользователей.
get <id> Получить содержимое объекта из депозитария по его идентификатору.
metaget <id> Получить метаобъект из словаря по его идентификатору.
metaput (<поле1>=<значение1>[, ...]) Создать или изменить метаобъект в словаре. Если в списке полей указан идентификатор (id), будет заменён существующий объект.
put (<поле1>=<значение1>[, ...]) Создать или изменить объект в депозитарии. Если в списке полей указан идентификатор (id), будет заменён существующий объект.
select <поля> from <класс> [where <условия>] Получить список полей объектов, удовлетворяющих указанным критериям.
<поля> - список полей, разделённых запятыми. Поля с пробелами заключаются в кавычки. Вы можете указать * для показа всех полей всех указанных классов.
<класс> - список имён классов, разделённых запятыми. Имена классов с пробелами заключаются в кавычки.
<условия> - условие по правилам CLIP. Поддерживаются операции сравнения '==', '!=', '>', '>=', '<=', '<' и логические операции '.not.', '.and.', '.or.'. Значения должны заключаться в двойные кавычки ("), а между условиями не должно быть пробелов.
Пример:
select id,author_name,email from mng_author where code=="Uri";
show <метакласс> Показать список метаобъектов.
Доступные классы метаобъектов:
databases - базы данных;
depositories - депозитарии;
extents - пространства имён;
attributes - атрибуты;
counters - счётчики;
indexes - индексы;
classes - классы;
tcolumns - столбцы видов;
tviews - виды;
reports - отчёты;
plugins - подключаемые модули;
users - пользователи;
groups - группы пользователей;
statistics - общая статистика по количеству метаобъектов.
use <база_данных> [<депозитарий>] Изменить текущую базу данных и депозитарий.
codb_close(<oDB>) --> NIL
<oDB> | - Объект. Объект подключения к базам данным CODB, возвращённый функцией codb_connect(). |
Returns : | NIL |
codb_execute(<oDB>,<sQuery>,[<sDatabase>],[<aFiles>]) --> oRes
<oDB> | - Объект. Объект подключения к базам данным CODB, возвращённый функцией codb_connect(). |
<sQuery> | - Строка. Запрос на CQL (диалект SQL, адаптированный для CODB). |
<sDatabase> | - Строка. Имя рабочего словаря:депозитария (например, ETC01:ETC0101). Необязательный параметр. |
<aFiles> | - Массив. Массив файлов, прикреплённых к запросу. Каждый элмент этого массива является массивом из двух элементов: { <имя_файла>, <содержимое> }. Необязательный параметр. |
Returns : | codb_execute() возвращает результат в виде объекта. Собственно данные можно получить изх этого объекта функцией codb_get_result(). |
codb_get_answer(<oRes>) --> '' | 'ERROR'
<oRes> | - Объект. Объект, возвращённый функцией codb_execute(). |
Returns : | Возвращает пустую строку, если запрос выполнен успешно или 'ERROR' если обнаружена ошибка. |
codb_get_column(<oRes>, <nIndex>) --> sName
<oRes> | - Объект. Объект, возвращённый функцией codb_execute(). |
<nIndex> | - Число. Порядковый номер столбца, начиная с 1. |
Returns : | Возвращает имя столбца в результате запроса или NIL, если нет столбца с таким номером. |
codb_get_error(<oRes>) --> sError | NIL
<oRes> | - Объект. Объект, возвращённый функцией codb_execute(). |
Returns : | Возвращает NIL, если запрос выполнен успешно или описание ошибки если обнаружена ошибка. |
codb_get_metaobject(<oDB>,<sID>,[<sDatabase>]) --> oMetaobject
<oDB> | - Объект. Объект подключения к базам данным CODB, возвращённый функцией codb_connect(). |
<sID> | - Строка. Идентификатор метаобъекта. |
<sDatabase> | - Строка. Имя рабочего словаря:депозитария (например, ETC01:ETC0101). Необязательный параметр. |
Returns : | Возвращает содержимое метаобъекта. |
codb_get_object(<oDB>,<sID>,[<sDatabase>]) --> oObject
<oDB> | - Объект. Объект подключения к базам данным CODB, возвращённый функцией codb_connect(). |
<sID> | - Строка. Идентификатор объекта. |
<sDatabase> | - Строка. Имя рабочего словаря:депозитария (например, ETC01:ETC0101). Необязательный параметр. |
Returns : | Возвращает содержимое объекта. |
codb_get_result(<oRes>) --> aResult
<oRes> | - Объект. Объект, возвращённый функцией codb_execute(). |
Returns : | Возвращает результат запроса в виде массива. |
codb_num_columns(<oRes>) --> nColumns
<oRes> | - Объект. Объект, возвращённый функцией codb_execute(). |
Returns : | Количество столбцов в результате запроса. |
codb_num_rows(<oRes>) --> nRows
<oRes> | - Объект. Объект, возвращённый функцией codb_execute(). |
Returns : | Количество строк в результате запроса. |
codb_put_metaobject(<oDB>,<oContent>,[<sDatabase>],<sClass>) --> oResult
<oDB> | - Объект. Объект подключения к базам данным CODB, возвращённый функцией codb_connect(). |
<oConent> | - Объект. Содержимое метаобъекта. |
<sDatabase> | - Строка. Имя рабочего словаря:депозитария (например, ETC01:ETC0101). Необязательный параметр. |
<sClass> | - Строка. Имя класса. |
Returns : | Объект результата. |
codb_put_object(<oDB>,<oContent>,[<sDatabase>],<sClass>) --> oResult
<oDB> | - Объект. Объект подключения к базам данным CODB, возвращённый функцией codb_connect(). |
<oConent> | - Объект. Содержимое объекта. |
<sDatabase> | - Строка. Имя рабочего словаря:депозитария (например, ETC01:ETC0101). Необязательный параметр. |
<sClass> | - Строка. Имя класса. |
Returns : | Объект результата. |
See also : | CODBFORMATTER |
Пред. | Начало | След. |
ENVIRONMENT | Уровень выше | DISKUTILS |