PHP Velho Oeste 2024

mssql_next_result

(PHP 4 >= 4.0.5, PHP 5, PECL odbtp >= 1.1.1)

mssql_next_resultMove o ponteiro interno do resultado para o próximo resultado

Descrição

mssql_next_result ( resource $result_id ) : bool

Quando se envia mais de uma sql para o servidor ou executando uma stored procedure com múltiplos resultados, irá causar que o servidor retorne múltiplos conjuntos de resultados. Esta função irá testar se há resultados adicionais do servidor. Se existir um conjunto adicional de resultados, irá liberar o conjunto atual de resultados e preparar para usar o novo conjunto de resultados.

Parâmetros

result_id

O resource de resultado que está sendo avaliado. Este resultado vem da chamada a mssql_query().

Valor Retornado

Retorna TRUE se um conjunto de resultado adicional está disponível ou FALSE caso contrário.

Exemplos

Exemplo #1 Exemplo da mssql_next_result()

<?php
$link 
mssql_connect("localhost""userid""secret");
mssql_select_db("MyDB"$link);
$sql "Select * from table1 select * from table2";
$rs mssql_query($sql$link);
do {
    while (
$row mssql_fetch_row($rs)) {
    }
} while (
mssql_next_result($rs));
mssql_free_result($rs);
mssql_close($link);
?>

add a note add a note

User Contributed Notes 5 notes

up
1
il cartolaio
13 years ago
As of today, this function is defined in FreeTDS (at least in the CVS version) and works perfectly with stored procedures.

Useful to avoid outer joins.
up
1
mail_umesh at yahoo dot com
20 years ago
you cant return multiple values from store proc but you can return multiple resultset, so you can use mssql_next_result()

eg..

    $stmt =  mssql_init("AuthLoginUser", $objDBH);
    mssql_bind($stmt,"@LoginUser",$LoginUser,SQLVARCHAR);
    mssql_bind($stmt,"@Password",$strNewPassword,SQLVARCHAR);
    mssql_bind($stmt,"@SessionId",$SessionId,SQLVARCHAR);
    //mssql_bind($stmt,"@ReturnVal",$ReturnVal,SQLVARCHAR,True);
    $rs=mssql_execute($stmt);

    do {
        while ($row = mssql_fetch_row($rs)) {
            echo "$row[0] -- $row[1]<BR>";
        }
    } while (mssql_next_result($rs));
    mssql_free_result($rs);
up
1
m1tk4 at hotmail dot com
21 years ago
This function does not exist as a Sybase (Sybase-CT) alias, so if you have PHP+FreeTDS||Sybase as a MSSQL client on Unix platform, it will not work.
up
1
gagarin[at]i-dep.com
21 years ago
It seems that mssql_next_result does not work with result sets returned by stored procedures.
up
0
itsacon at itsacon dot net
15 years ago
When retrieving multiple resultsets from a stored procedure, don't call mssql_free_statement on the statement resource, as any resultsets not yet retrieved will be lost, and mssql_next_result will report no more result sets were available.
To Top