(PHP 8.2, PECL OCI8 >= 3.2)
oci_set_prefetch_lob — Sets the amount of data prefetched for each CLOB or BLOB.
Sets the internal buffer size used to fetch each CLOB or BLOB value when the implementation gets the internal Oracle LOB locator from the database after a successful query call to oci_execute() and for each subsequent internal fetch request to the database. Increasing this value can improve the performance of fetching smaller LOBs by reducing round-trips between PHP and the database. Memory usage will change.
The value affects LOBs returned as OCILob instances and also those returned
using OCI_RETURN_LOBS
.
Call oci_set_prefetch_lob() before calling oci_execute(). If it is not called, the value of oci8.prefetch_lob_size is used.
The LOB prefetch value should only be set with Oracle Database 12.2 or later.
statement
Un identifiant de requête OCI8
créé par la fonction oci_parse() et exécuté par la fonction
oci_execute(), ou un identifiant de requête REF
CURSOR
.
prefetch_lob_size
The number of bytes of each LOB to be prefetched, >= 0
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Exemple #1 Changing the LOB prefetch value for a query
<?php
$conn = oci_connect('hr', 'welcome', 'localhost/XE');
$stid = oci_parse($conn, 'SELECT myclob FROM mytable');
oci_set_prefetch_lob($stid, 100000); // Set before calling 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);
?>