(PHP 8.2, PECL OCI8 >= 3.2)
oci_set_prefetch_lob — Устанавливает объём данных, предварительно выбираемых для каждого CLOB или BLOB
$statement
, int $prefetch_lob_size
): boolУстанавливает размер внутреннего буфера, используемого для выборки каждого значения 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);
?>