9.4 Получение всех элементов данных сразу
В дополнение к шаблону использования fetchOne(), описанному в разделе 9.3 «Работа с наборами данных», который позволяет приложениям потреблять элементы данных по одному, X DevAPI также предоставляет шаблон, использующий fetchAll(), который передает все элементы данных набора данных в виде списка приложению. Разные реализации X DevAPI используют соответствующие типы данных для своего языка программирования для списка. Поскольку используются разные типы данных, поддерживаются собственные конструкции языка для доступа к элементам списка. В следующем примере предполагается, что существует схема test и что таблица сотрудников существует в myTable.
myResult = myTable.select(['name', 'age']) \
.where('name like :name').bind('name','L%') \
.execute()
myRows = myResult.fetch_all()
for row in myRows:
print("%s is %s years old." % (row.name, row.age))
При смешивании fetchOne() и fetchAll() для чтения из одного набора данных следует учитывать, что каждый вызов fetchOne() или fetchAll() потребляет возвращаемые элементы данных. Потребленные элементы нельзя запросить повторно. Например, если приложение вызывает fetchOne() для получения первого элемента данных набора данных, то последующий вызов fetchAll() возвращает второй по счету элемент данных. Первый элемент не входит в список элементов данных, возвращаемых fetchAll(). Аналогично, при повторном вызове fetchAll() для набора данных после предыдущего вызова, второй вызов возвращает пустой набор.
Использование fetchAll() заставляет соединитель создать список всех элементов в памяти, прежде чем список целиком может быть передан приложению. Срок жизни списка не зависит от срока жизни набора данных, который его сгенерировал.
© 2025 Oracle
Licensed under the GPLv2 License.