Получить метаданные столбцов табличного объекта (column_info)
Назначение
Метод column_info предоставляет метаданные столбцов табличного объекта БД.
Пакет
Package Linter::db
Прототип
$sth = $dbh->column_info($catalog, $schema, $table, $column);
| Параметр | Описание | |
|---|---|---|
$catalog | См. метод table_info | |
$schema | См. метод table_info | |
$table | См. метод table_info | |
$column | Имя столбца табличного объекта БД (строка длиной не более 66 символов в ANSI-кодировке) |
Возвращаемые значения
| Переменная | Описание | |
|---|---|---|
$sth | Объект Statement Handle |
Запись метаданных о столбце табличного объекта БД представлена в виде массива из следующих элементов:
| Имя элемента | Значение | |
|---|---|---|
TABLE_CAT
| Пустая строка | |
TABLE_SCHEM
| Имя схемы объекта (символьное значение в кодировке ANSI длиной до 66 символов) | |
TABLE_NAME
| Имя таблицы | |
COLUMN_NAME
| Имя столбца | |
DATA_TYPE | Числовой идентификатор типа данных ODBC SQL (см. таблицу 4) | |
TYPE_NAME
| Имя типа данных в терминах СУБД ЛИНТЕР | |
COLUMN_SIZE
| Максимальный размер для символьного представления числовых типов данных | |
BUFFER_LENGTH
| Размер буфера для загрузки значения столбца | |
DECIMAL_DIGITS
| Количество десятичных цифр после запятой, используемых для представления значения числового типа данных | |
NUM_PREC_RADIX
| Основание системы счисления: 10 для числовых типов данных и undef для остальных | |
NULLABLE
| Индикатор допустимости NULL-значений. Возможные значения:
| |
REMARKS
| Описание (комментарий) столбца (если данная информация присутствует в системной таблице $$$OBJ_COMMENTS или пустая строка, если комментарий отсутствует) | |
COLUMN_DEF
| Значение столбца по умолчанию (или undef, если значение по умолчанию не установлено) | |
SQL_DATA_TYPE
| Числовой идентификатор типа данных ODBC SQL (см. таблицу 4) | |
SQL_DATETIME_SUB
| Целое число, описывающее подтип данных DATE | |
CHAR_OCTET_LENGTH
| Максимальная длина в байтах символьного или байтового типа данных столбца | |
ORDINAL_POSITION
| Порядковый номер столбца в таблице (отсчет начинается с 1) | |
IS_NULLABLE
| Индикатор допустимости NULL-значения. Возможные значения: 'NO', 'YES', '' |
Примечание
Если клиентское приложение выполняется от имени пользователя БД, который не имеет дискретного или мандатного доступа к некоторым объектам БД, то результат не будет содержать инфорацию об этих объектах.
Таблица 4. Соответствие типов данных СУБД ЛИНТЕР и типов данных ODBC SQL
| Имя типа данных СУБД ЛИНТЕР | Идентификатор типа данных ODBC SQL | Числовой идентификатор ODBC SQL |
|---|---|---|
| CHARACTER | SQL_CHAR | 1 |
| SMALLINT | SQL_SMALLINT | 5 |
| INTEGER | SQL_INTEGER | 4 |
| BIGINT | SQL_BIGINT | -5 |
| REAL | SQL_REAL | 7 |
| DOUBLE | SQL_DOUBLE | 8 |
| DATE | SQL_TYPE_TIMESTAMP | 93 |
| DECIMAL | SQL_DECIMAL | 3 |
| BYTE | SQL_BINARY | -2 |
| BLOB | SQL_LONGVARBINARY | -4 |
| VARCHAR | SQL_VARCHAR | 12 |
| VARBYTE | SQL_VARBINARY | -3 |
| BOOLEAN | SQL_BIT | -7 |
| NCHAR | SQL_WCHAR | -8 |
| NCHAR VARYING | SQL_WVARCHAR | -9 |
| EXTFILE | SQL_CHAR | 1 |
Примечание
Для перемещения по записям массива можно использовать метод fetchall_arrayref, fetchall_hashref и т.п.
Примеры
Получить информацию о столбцах таблицы PERSON:
$sth = $dbh->column_info('', '', 'PERSON', '');
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->{COLUMN_NAME} . "\n");
print($data_ref->{DATA_TYPE} . "\n");
print($data_ref->{TYPE_NAME} . "\n");
print($data_ref->{COLUMN_SIZE} . "\n");
print($data_ref->{BUFFER_LENGTH} . "\n");
print($data_ref->{DECIMAL_DIGIT} . "\n");
print($data_ref->{NUM_PREC_RADIX} . "\n");
print($data_ref->{NULLABLE} . "\n");
print($data_ref->{REMARKS} . "\n");
print($data_ref->{COLUMN_DEF} . "\n");
print($data_ref->{SQL_DATA_TYPE} . "\n");
print($data_ref->{SQL_DATETIME_SUB} . "\n");
print($data_ref->{CHAR_OCTET_LENGTH} . "\n");
print($data_ref->{ORDINAL_POSITION} . "\n");
print($data_ref->{IS_NULLABLE} . "\n");
}