(PHP 4 >= 4.3.0, PHP 5)
sybase_unbuffered_query — Envía una consulta a Sybase query y no bloquea
$query
, resource $link_identifier
[, bool $store_result
] )sybase_unbuffered_query() envía una consulta a la base de datos activa actualmente en el servidor que está asociada con el identificador de conexión especificado. Si el identificador de conexión no se especifica, se asume la última conexión abierta. Si no hay conexión abierta, la función intenta establecer una como si se hubiera llamado a sybase_connect() , y la utiliza.
A diferencia de sybase_query(), sybase_unbuffered_query() únicamente lee la primera fila del resultado. sybase_fetch_array() y funciones similares leen más filas si es necesario. sybase_data_seek() lee tantas filas hasta la fila objetivo. El comportamiento de esta última puede ser más eficiente para conjuntos de resultados grandes.
sybase_num_rows() no devolverá el número correcto de filas si se han leído todas las filas de resultado. Para Sybase, el número de filas no es conocido y por lo tanto es calculado por la implementación del cliente.
Nota:
Si no se leen todas las filas del resultado previamente a ejecutar la siguiente consulta, PHP generará un 'warning' y cancelará todos los resultados pendientes. Para evitar esto, utilizar sybase_free_result() que cancelará las filas de resultado de una consulta que no se hayan cargado en el buffer.
query
link_identifier
store_result
El parámetro opcional store_result
puede ser FALSE
para
indicar que el conjunto de resultado no deberá ser cargado en memoria, y de ese modo
minimizar el uso de memoria que es particularmente interesante con
conjuntos de resultados muy grandes.
Devuelve un identificador de resultado Sybase en caso de éxito, o FALSE
en
caso de error.
Ejemplo #1 Ejemplo con sybase_unbuffered_query()
<?php
$dbh = sybase_connect('SYBASE', '', '');
$q = sybase_unbuffered_query('select firstname, lastname from huge_table', $dbh, false);
sybase_data_seek($q, 10000);
$i = 0;
while ($row = sybase_fetch_row($q)) {
echo $row[0], ' ', $row[1], '<br />';
if ($i++ > 40000) {
break;
}
}
sybase_free_result($q);
sybase_close($dbh);
?>
Nota: Esta función está disponible sólo cuando se utiliza la biblioteca CT de Sybase, y no la biblioteca DB.