(PHP 4 >= 4.3.0, PHP 5)
sybase_unbuffered_query — Envia uma consulta Sybase e não bloqueia
$query
, resource $link_identifier
[, bool $store_result
] ) : resource
Retorna um identificador de resultado Sybase positivo em caso de sucesso,
ou FALSE
em caso de erro.
Nota: Esta função somente está disponível quando utilizando a biblioteca de interface CT do Sybase, mas não pela biblioteca DB.
sybase_unbuffered_query() envia uma consulta para o banco de dados ativo no servidor que esta associado ao identificador de conexão especificado. Se o identificador de conexão não for especificado, a última conexão aberta é assumida. Se não houver conexão aberta, a função tenta estabelecer uma conexão como se sybase_connect() fosse chamada, e a utiliza.
Diferentemente de sybase_query(), sybase_unbuffered_query() lê apenas a primeira linha do conjunto de resultados . sybase_fetch_array() e as funções similares lêem mais linhas caso necessário. sybase_data_seek() lê até a linha desejada. este funcionamento deve produzir melhor velocidade para grandes conjuntos de resultados.
sybase_num_rows() irá retornar apenas o número coreto de linhas se todo o conjunto de resultados já foi lido. Para o Sybase, o número de linhas não é conhecido e portanto não é computado pela implementação do cliente.
Nota:
Se você não ler todo o conjunto de resultados antes de executar a próxima consulta, o PHP irá emitir um aviso e cancelar todos os resultados pendentes. Para eliminar isto, use sybase_free_result() o qual cancela os reaultados pendentes de uma consulta sem buffer.
O parâmetro opcional store_result
pode ser FALSE
para indicar
que os conjuntos de resultados não devem ser obtidos para a memória, assim minimizando a utilização de memoria,
o que é particularmente interessante para conjuntos muito grandes de resultados.
Exemplo #1 Exemplo 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);
?>
Veja também sybase_query().