Получить массив ссылок на записи выборки данных выполненного запроса (fetchall_arrayref)

Назначение
 

Метод fetchall_arrayref предоставляет ссылку на массив всей выборки данных предварительно выполненного SQL-запроса, где каждая запись выборки данных представлена ссылкой на массив значений полей SQL-запроса.

Если выборка данных пуста, метод возвращает ссылку на пустой массив. Если в процессе выполнения метода по какой-либо причине (например, разрыв соединения) драйвер больше не сможет предоставлять записи выборки данных, то возвращаемый массив будет содержать ссылки только на ранее выбранные записи. Необходимо контролировать подобные ситуации, например, путем вызова $sth- >err для уточнения возможного усечения выборки данных из-за возникшей ошибки.

Параметр $slice задает номера столбцов выборки данных для формирования записей, на которые будут создаваться ссылки в возвращаемом массиве. Если параметр не определён, то в возвращаемом массиве будут ссылки на записи, содержащие значения всех столбцов выборки данных. Нумерация элементов в массиве начинается с 0.

Если параметр $slice является ссылкой на хеш-массив, содержащий хеш-ключи (имена) столбцов, то метод fetchall_arrayref формирует записи по хеш-ключам этого массива. Если хеш-массив не пуст, то он используется для формирования записей, на которые создаются ссылки в возвращаемом массиве ссылок, по именам столбцов. Значения хеш-массива должны быть установлены в 1.

Предоставлять значения всех столбцов выборки данных в виде ссылки на массив значений полей выборки:

$tbl_ary_ref = $sth- >fetchall_arrayref([]);

Предоставлять значения только первого столбца каждой записи:

$tbl_ary_ref = $sth- >fetchall_arrayref([0]);

Предоставлять значения всех столбцов выборки данных в виде ссылки на хеш-массив:

$tbl_ary_ref = $sth- >fetchall_arrayref({});

Предоставлять значения столбцов MODEL и MAKE в виде ссылки на хеш-массив:

$tbl_ary_ref = $sth- >fetchall_arrayref({ MODEL = > 1, MAKE = > 1 });

Если $slice является ссылкой на хеш-массив, то хеш-значения этого массива можно использовать для указания выбираемых столбцов и их переименования. Номера выбираемых столбцов задаются порядковым номером хеш-значения в хеш-массиве (отсчет начинается с 0) и, при необходимости, указанием нового имени столбца.

Например, выборка значений только первого и второго столбца (MODEL, MAKE) таблицы AUTO и присвоения им нового имени CAR_MODEL, CAR_MAKE

$tbl_ary_ref = $sth- >fetchall_arrayref(\{ 0= >'CAR_MODEL', 1= >'CAR_MAKE' });

Если параметр $max_rows определен и имеет значение больше или равное нулю, то он используется для ограничения количества извлекаемых записей выборки данных.

Пакет

Package Linter::st

Прототип
$tbl_ary_ref = $sth- >fetchall_arrayref;

$tbl_ary_ref = $sth- >fetchall_arrayref($slice);

$tbl_ary_ref = $sth- >fetchall_arrayref($slice, $max_rows);
Параметр Описание
$slice Контролирует формат возвращаемых записей массива и может задавать столбцы, которые должны быть включены в выходной массив (см. описание метода)
$max_rows Максимальное количество выбираемых записей выборки данных
Возвращаемые значения
Переменная Описание
$tbl_ary_ref Ссылка на массив ссылок отобранных записей выборки данных. Значение undef возвращается при выполнении метода по неактивному объекту Statement (запрос не выполнен). Пустой массив возвращается при отсутствии данных
$DBI::errstr Диагностическое сообщение (в случае ошибки)
Пример
my $dbh = $drh- >connect("DEMO", "SYSTEM", "MANAGER8")
or die "Could not connect to database: " . DBI- >errstr;
my $sth = $dbh- >prepare("select MODEL, MODEL, WEIGHT, COLOR from AUTO;");
$sth- >execute();
my $ary_ref = $sth- >fetchall_arrayref([0, 3], 5);
for (my $i = 0; $i <  scalar(@$ary_ref); $i++)
{
    for (my $j = 0; $j <  scalar(@{$ary_ref- >[$i]}); $j++)
    {
        print($ary_ref- >[$i][$j] . "\n");
    }
    print("\n");
}
$sth- >finish();
$dbh- >disconnect();