DBI.pmAPI - часть 8
$statement_handle->execute("J%");
# Выполнена вторая команда следующего содержания:
# SELECT name, date FROM myothertable WHERE name like 'J%'
DBI::fetchall_arrayref
$ref_of_array_of_arrays = $statement_handle->fetchall_arrayref;
DBI: :fetchall_arrayref возвращает все оставшиеся данные в описателе команды в виде ссылки на массив. Каждая строка массива - ссылка на другой массив, в котором содержатся данные этой строки. Если в описателе команды нет данных, функция возвращает неопределенное значение undef. Если с этим описателем команды уже выполнялись функции DBI: :fetchrow_ *, то DBI: :fetchall_arrayref возвращает все данные, оставшиеся после последнего обращения к DBI: : fetch row *.
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata' ,undef,undef);
my $query = "SELECT name, date FROM myothertable";
my Soutput = $db->prepare($query);
$output->execute;
my $data = $output->fetchall_arrayref;
# Теперь $data является ссылкой на массив массивов. Каждый элемент
# 'главного' массива сам является ссылкой на массив, содержащий строку данных.
print "Четвертой строкой данных в таблице является: " . $data->[3][1]. "\n";
# Элемент 3 'главного' массива является массивом, содержащим четвертую
# строку данных, # Элемент 1 этого массива является датой.
DBI::fetchrow_array
@row_of_data = $statement_handle->fetchrow;
DBI: : fetch row возвращает очередную строку данных из описателя команды, созданного DBI: :execute . Каждое последующее обращение к DBI: : fetchrow возвращает очередную строку данных. Когда данных больше нет, функция возвращает неопределенное значение undef. Порядок элементов в результирующем массиве определяется исходным запросом. Если запрос имел вид SELECT * FROM . . . , то элементы следуют в том порядке, в котором они были определены в таблице.
Пример
use DBI;
my $db = DBI->connect('DBI:mSQL:mydata',undef,undef);
my $query = "SELECT name, date FROM myothertable WHERE name LIKE 'Bob%'";