Получить описание всех поддерживаемых типов данных (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();