Получить метаданные столбцов табличного объекта (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', '' |
Примечание
Если клиентское приложение выполняется от имени пользователя БД, который не имеет дискретного или мандатного доступа к некоторым объектам БД, то результат не будет содержать инфорацию об этих объектах.
Имя типа данных СУБД ЛИНТЕР | Идентификатор типа данных 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"); }