sybase_unbuffered_query

(PHP 4 >= 4.3.0, PHP 5)

sybase_unbuffered_query -- Envia uma consulta Sybase e não bloqueia

Descrição

resource sybase_unbuffered_query ( string query, resource link_identifier [, bool store_result] )

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().