Получить описание всех поддерживаемых типов данных (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
Таблица 5. Список и порядок предоставляемых DBD-драйвером СУБД ЛИНТЕР атрибутов типов данных
Имя хеш-индексаНомер хеш-индексаОписание
TYPE_NAME0Имя типа данных, указываемое в операторе CREATE TABLE
DATA_TYPE1Идентификатор (номер) типа данных в терминах языка SQL
COLUMN_SIZE 2Для числовых типов данных означает общее количество цифр (если значение NUM_PREC_RADIX равно 10). Для строковых типов данных – максимальный размер строки в символах. Для дат – максимальное количество символов, необходимых для отображения значения
LITERAL_PREFIX3Символ, используемый для обозначения префикса символьных литералов
LITERAL_SUFFIX4Символ, используемый для обозначения суффикса символьных литералов
CREATE_PARAMS5Имена параметров для определения типа данных. Например, значение параметра для типа DECIMAL будет "precision,scale", где точность и масштаб являются целочисленными значениями, а для типа VARCHAR (и других строковых типов) будет "length", где длина также задается целочисленным значением. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо
NULLABLE6

Допустимость NULL-значения:

  • 0 или пустая строка – недопустимо;

  • 1 – допустимо;

  • 2 – неизвестно

CASE_SENSITIVE7

Регистрозависимость в операциях сортировки и сравнения:

  • 0 – отсутствует;

  • 1 – присутствует

SEARCHABLE8

Возможность использования типа данных в предложении WHERE:

  • 0 – не может быть использован в предложении WHERE;

  • 1 – может быть использован только с предикатом LIKE;

  • 2 – может быть использован со всеми операторами сравнения, за исключением предиката LIKE;

  • 3 – может быть использован в предложении WHERE с любым оператором сравнения

UNSIGNED_ATTRIBUTE9

Признак беззнакового типа данных:

  • 0 – не относится к беззнаковым;

  • 1 – относится к беззнаковым;

  • NULL (undef) – не применимо к типу данных

FIXED_PREC_SCALE 10Указывает, имеет ли тип данных фиксированную точность и масштаб. В СУБД ЛИНТЕР ни один из типов не относится к тем типам, которые имеют фиксированную точность и масштаб (значение 0)
AUTO_UNIQUE_VALUE 11

Признак того, относится ли тип данных к типам, у которых может автоматически формироваться уникальное значение:

  • 0 – не относится;

  • 1 – относится;

  • NULL (undef) – не применимо для типа данных

LOCAL_TYPE_NAME12Имя типа данных в терминах СУБД ЛИНТЕР
MINIMUM_SCALE13Минимальный масштаб значений типа данных. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо
MAXIMUM_SCALE14Максимальный масштаб значения типа данных. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо
SQL_DATA_TYPE 15Идентификатор (номер) типа данных в терминах языка SQL. Значение данного столбца является таким же, как в столбце DATA_TYPE, за исключением типов данных, относящихся к типу DATE
SQL_DATETIME_SUB16Целое число, описывающее подтип данных типа DATE
NUM_PREC_RADIX17Основание системы счисления: 10 для числовых типов данных и undef для остальных. Для точных числовых типов NUM_PREC_RADIX содержит значение 10, а значение COLUMN_SIZE содержит общее количество цифр. Значение NULL (undef) возвращается для тех типов данных, для которых это не применимо
INTERVAL_PRECISION18Диапазон точности для интервальных типов данных. Значение 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();