Получить метаданные объекта БД (table_info)
Назначение
Метод table_info
предоставляет метаданные о табличных объектах БД.
Пакет
Package Linter::db
Прототип
$sth = $dbh- >table_info($catalog, $schema, $table, $type);
Параметр | Описание | |
---|---|---|
$catalog | Значение параметра игнорируется | |
$schema | Имя схемы (владельца) объекта БД (строка длиной не более 66 символов в ANSI-кодировке) | |
$table | Имя объекта БД (строка длиной не более 66 символов в ANSI-кодировке) | |
$type | Список из одного или более типов объектов. Допустимые значения:
|
Синтаксис значений параметров:
-
параметры
$catalog
,$schema
,$table
,$type
могут быть заданы шаблоном. Элементы шаблона:-
символ процента ('%') обозначает любую последовательность символов. Например при использованиии шаблона '%FOO%' метод будет возвращать информацию о всех объектах заданного типа, в наименовании которых присутствуют символы 'FOO' (см. документацию «СУБД ЛИНТЕР. Справочник по SQL», раздел «Предикат подобия»);
-
символ подчеркивания ('_') обозначает любой одиночный символ. Например, при использованиии шаблона 'FOO_%' метод будет возвращать информацию о всех объектах заданного типа, наименование которых начинается с 'FOO' (т.е. будет аналогичен шаблону 'FOO%' или 'FOO_BAR%' и ему буде соответствовать имя таблицы 'FOO1BAR') (см. документацию «СУБД ЛИНТЕР. Справочник по SQL», раздел «Предикат подобия»);
-
-
значение параметра
$type
может быть заключено в одинарные или парные апострофы, например:$type = 'TABLE'; $type = "TABLE"; $type = "'TABLE'";
-
значение параметра
$type
может быть в виде списка значений, разделенных запятой, например:$type = 'TABLE', 'VIEW'; $type = "TABLE, VIEW"; $type = "'TABLE', 'VIEW'";
Особенности обработки параметров:
-
если значение параметра
$catalog
задано шаблоном '%', а значения параметров$schema
и$table
являются пустыми, то результат будет содержать одну строку с пустыми значениями столбцов.$sth = $dbh- >table_info('%', '', '');
-
если значение параметра
$schema
задано шаблоном '%', а значения параметров$catalog
и$table
являются пустыми, то результат будет содержать список имен схем. -
если значение параметра
$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"); }