Получить метаданные столбцов табличного объекта (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-значений. Возможные значения:
  • SQL_NO_NULLS – 0 (NULL-значения не разрешены);

  • SQL_NULLABLE – 1 (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
CHARACTERSQL_CHAR1
SMALLINTSQL_SMALLINT5
INTEGERSQL_INTEGER4
BIGINTSQL_BIGINT-5
REALSQL_REAL7
DOUBLESQL_DOUBLE8
DATESQL_TYPE_TIMESTAMP93
DECIMALSQL_DECIMAL3
BYTESQL_BINARY-2
BLOBSQL_LONGVARBINARY-4
VARCHARSQL_VARCHAR12
VARBYTESQL_VARBINARY-3
BOOLEANSQL_BIT-7
NCHARSQL_WCHAR-8
NCHAR VARYINGSQL_WVARCHAR-9
EXTFILESQL_CHAR1

Примечание

Для перемещения по записям массива можно использовать метод 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");
}