(PHP 8.2, PECL OCI8 >= 3.2)
oci_set_prefetch_lob — Устанавливает объём данных, предварительно выбираемых для каждого CLOB или BLOB
Устанавливает размер внутреннего буфера, используемого для выборки каждого значения CLOB или BLOB, когда реализация получает внутренний локатор LOB Oracle из базы данных после успешного вызова запроса к функции oci_execute() и для каждого последующего внутреннего запроса выборки в базу данных. Увеличение этого значения может улучшить производительность выборки меньших LOB за счёт сокращения круговых обходов между PHP и базой данных. Использование памяти изменится.
Значение влияет на большие объекты, возвращаемые как экземпляры OCILob, а также на те,
которые возвращаются с использованием OCI_RETURN_LOBS
.
Функция oci_set_prefetch_lob() вызывается до вызова oci_execute(). Если функция не была вызвана, используется значение oci8.prefetch_lob_size.
Значение предварительной выборки LOB следует устанавливать только в Oracle Database 12.2 или новее.
statement
Корректный идентификатор
выражения OCI8, полученный из функции oci_parse()
и исполненный функцией oci_execute(),
или идентификатор выражения REF CURSOR
.
prefetch_lob_size
Число байтов каждого LOB, которое нужно предварительно выбрать, >= 0.
Функция возвращает true
, если выполнилась успешно, или false
, если возникла ошибка.
Пример #1 Изменение значения предварительной выборки LOB для запроса
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, 'SELECT myclob FROM mytable');
oci_set_prefetch_lob($stid, 100000); // Установка значения перед вызовом oci_execute()
oci_execute($stid);
echo "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS+OCI_RETURN_LOBS)) {
echo "<tr>\n";
foreach ($row as $item) {
echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : " ")."</td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
oci_free_statement($stid);
oci_close($conn);
?>