Получить метаданные объекта БД (table_info)

Назначение
 

Метод table_info предоставляет метаданные о табличных объектах БД.

Пакет

Package Linter::db

Прототип
$sth = $dbh- >table_info($catalog, $schema, $table, $type);
Параметр Описание
$catalog Значение параметра игнорируется
$schema Имя схемы (владельца) объекта БД (строка длиной не более 66 символов в ANSI-кодировке)
$table Имя объекта БД (строка длиной не более 66 символов в ANSI-кодировке)
$type Список из одного или более типов объектов. Допустимые значения:
  • "TABLE";

  • "VIEW";

  • "SYNONYM";

  • "SYSTEM TABLE".

Синтаксис значений параметров:

  1. параметры $catalog, $schema, $table, $type могут быть заданы шаблоном. Элементы шаблона:

    • символ процента ('%') обозначает любую последовательность символов. Например при использованиии шаблона '%FOO%' метод будет возвращать информацию о всех объектах заданного типа, в наименовании которых присутствуют символы 'FOO' (см. документацию «СУБД ЛИНТЕР. Справочник по SQL», раздел «Предикат подобия»);

    • символ подчеркивания ('_') обозначает любой одиночный символ. Например, при использованиии шаблона 'FOO_%' метод будет возвращать информацию о всех объектах заданного типа, наименование которых начинается с 'FOO' (т.е. будет аналогичен шаблону 'FOO%' или 'FOO_BAR%' и ему буде соответствовать имя таблицы 'FOO1BAR') (см. документацию «СУБД ЛИНТЕР. Справочник по SQL», раздел «Предикат подобия»);

  2. значение параметра $type может быть заключено в одинарные или парные апострофы, например:

    $type = 'TABLE';
    $type = "TABLE";
    $type = "'TABLE'";
  3. значение параметра $type может быть в виде списка значений, разделенных запятой, например:

    $type = 'TABLE', 'VIEW';
    $type = "TABLE, VIEW";
    $type = "'TABLE', 'VIEW'";

Особенности обработки параметров:

  1. если значение параметра $catalog задано шаблоном '%', а значения параметров $schema и $table являются пустыми, то результат будет содержать одну строку с пустыми значениями столбцов.

    $sth = $dbh- >table_info('%', '', '');
  2. если значение параметра $schema задано шаблоном '%', а значения параметров $catalog и $table являются пустыми, то результат будет содержать список имен схем.

  3. если значение параметра $type задано шаблоном '%', а значения параметров $catalog, $schema и $table являются пустыми, то результат будет содержать список типов объектов БД.

Примечание

Если клиентское приложение выполняется от имени пользователя БД, который не имеет дискретного или мандатного доступа к некоторым объектам БД, то результат не будет содержать инфорацию об этих объектах.

Возвращаемые значения
Переменная Описание
$sth Объект Statement Handle

Запись метаданных об объекте БД представлена в виде массива из следующих элементов:

Имя элемента Значение
TABLE_CAT Пустая строка
TABLE_SCHEM Имя схемы (символьное значение в кодировке ANSI длиной до 66 символов)
TABLE_NAME Имя объекта БД
TABLE_TYPE Тип объекта БД (одно из значений, перечисленных в описании параметра $type)
REMARKS Для таблиц – описание (комментарий) таблицы (если данная информация присутствует в системной таблице $$$OBJ_COMMENTS или пустая строка, если комментарий отсутствует). Для объектов других типов возвращается пустая строка

Примечание

Для перемещения по записям массива можно использовать методы fetchall_arrayref, fetchall_hashref и т.п.

Пример
$sth = $dbh- >table_info('', '%PER%', '', '');
while (my $data_ref = $sth- >fetchrow_hashref())
{
    print($data_ref- >{TABLE_CAT} . "\n");
    print($data_ref- >{TABLE_SCHEM} . "\n");
    print($data_ref- >{TABLE_NAME} . "\n");
    print($data_ref- >{TABLE_TYPE} . "\n");
    print($data_ref- >{REMARKS} . "\n");
}