Получить описание всех поддерживаемых типов данных (type_info_all)
Назначение
Метод type_info_all предоставляет ссылку на массив, который содержит информацию о каждом типе данных, поддерживаемом СУБД и DBD-драйвером. Массив и его содержимое должны использоваться только для чтения.
Структура возвращаемого массива:
| Порядковый номер элемента массива | Значение элемента массива | |
|---|---|---|
| 1 | Ссылка на хеш-массив, содержащий имена атрибутов типов данных. Обращение к элементам хеш-массива выполняется по хеш-ключу Name => Index
$type_info_all = [
{ TYPE_NAME => 0,
DATA_TYPE => 1,
COLUMN_SIZE => 2,
LITERAL_PREFIX => 3,
LITERAL_SUFFIX => 4,
CREATE_PARAMS => 5,
NULLABLE => 6,
CASE_SENSITIVE => 7,
SEARCHABLE => 8,
UNSIGNED_ATTRIBUTE => 9,
FIXED_PREC_SCALE => 10,
AUTO_UNIQUE_VALUE => 11,
LOCAL_TYPE_NAME => 12,
MINIMUM_SCALE => 13,
MAXIMUM_SCALE => 14,
SQL_DATA_TYPE => 15,
SQL_DATETIME_SUB => 16,
NUM_PREC_RADIX => 17,
INTERVAL_PRECISION => 18,
}
] | |
| 2...n | Ссылка на массив, содержащий значения перечисленных в первом элементе атрибутов типов данных. Атрибуты типов данных, предоставляемые DBD-драйвером СУБД ЛИНТЕР, приведены в таблице 5 |
| Имя хеш-индекса | Номер хеш-индекса | Описание |
|---|---|---|
| TYPE_NAME | 0 | Имя типа данных, указываемое в операторе CREATE TABLE |
| DATA_TYPE | 1 | Идентификатор (номер) типа данных в терминах языка SQL |
| COLUMN_SIZE | 2 | Для числовых типов данных означает общее количество цифр (если значение NUM_PREC_RADIX равно 10). Для строковых типов данных – максимальный размер строки в символах. Для дат – максимальное количество символов, необходимых для отображения значения |
| LITERAL_PREFIX | 3 | Символ, используемый для обозначения префикса символьных литералов |
| LITERAL_SUFFIX | 4 | Символ, используемый для обозначения суффикса символьных литералов |
| CREATE_PARAMS | 5 | Имена параметров для определения типа данных. Например, значение параметра для типа DECIMAL будет "precision,scale", где точность и масштаб являются целочисленными значениями, а для типа VARCHAR (и других строковых типов) будет "length", где длина также задается целочисленным значением. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо |
| NULLABLE | 6 | Допустимость NULL-значения:
|
| CASE_SENSITIVE | 7 | Регистрозависимость в операциях сортировки и сравнения:
|
| SEARCHABLE | 8 | Возможность использования типа данных в предложении WHERE:
|
| UNSIGNED_ATTRIBUTE | 9 | Признак беззнакового типа данных:
|
| FIXED_PREC_SCALE | 10 | Указывает, имеет ли тип данных фиксированную точность и масштаб. В СУБД ЛИНТЕР ни один из типов не относится к тем типам, которые имеют фиксированную точность и масштаб (значение 0) |
| AUTO_UNIQUE_VALUE | 11 | Признак того, относится ли тип данных к типам, у которых может автоматически формироваться уникальное значение:
|
| LOCAL_TYPE_NAME | 12 | Имя типа данных в терминах СУБД ЛИНТЕР |
| MINIMUM_SCALE | 13 | Минимальный масштаб значений типа данных. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо |
| MAXIMUM_SCALE | 14 | Максимальный масштаб значения типа данных. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо |
| SQL_DATA_TYPE | 15 | Идентификатор (номер) типа данных в терминах языка SQL. Значение данного столбца является таким же, как в столбце DATA_TYPE, за исключением типов данных, относящихся к типу DATE |
| SQL_DATETIME_SUB | 16 | Целое число, описывающее подтип данных типа DATE |
| NUM_PREC_RADIX | 17 | Основание системы счисления: 10 для числовых типов данных и undef для остальных. Для точных числовых типов NUM_PREC_RADIX содержит значение 10, а значение COLUMN_SIZE содержит общее количество цифр. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо |
| INTERVAL_PRECISION | 18 | Диапазон точности для интервальных типов данных. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо |
Для некоторых типов данных в возвращаемом массиве может быть представлено несколько строк массива, если имя типа данных имеет синонимы или разные варианты реализации (например, INTEGER и INTEGER AUTOINC).
Примечание
Метод type_info_all обычно не используется напрямую. Более удобный и полезный интерфейс для получения информации о типах данных предоставляет метод type_info.
Пакет
Package Linter::db
Прототип
$type_info_all = $dbh->type_info_all;
Возвращаемые значения
| Переменная | Описание | |
|---|---|---|
$type_info_all
| Ссылка на массив с атрибутами всех поддерживаемых СУБД ЛИНТЕР типов данных | |
$DBI::errstr
| Диагностическое сообщение (в случае ошибки) |
Пример
my $dbh = $drh->connect("DEMO", "SYSTEM", "MANAGER8")
or die "Could not connect to database: " . DBI->errstr;
my $tia = $dbh->type_info_all();
for (my $i = 1; $i <= scalar(@$tia); $i++)
{
print(join("\n", @{$tia->[$i]}));
}
$dbh->disconnect();