Получить метаданные объекта БД (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");
}