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.
(PHP 4 >= 4.0.5, PHP 5, PECL odbtp >= 1.1.1)
mssql_next_result — Mover el puntero interno del resultado al siguiente resultado
Esta función está OBSOLETA en PHP 7.0.0.
Las alternativas a esta función son:
$result_id
) : boolAl enviar más de una instrucción SQL en el servidor o ejecutar un procedimiento almacenado con varios resultados, causará que el servidor devuelva varios conjuntos de resultados. Esta función pondrá a prueba de forma disponible resultados adicionales del servidor. Si existe un conjunto de resultados adicional será liberado el conjunto de resultados existentes y preparado para recuperar las filas del nuevo conjunto de resultados.
result_id
El recurso de resultado que se está evaluando. Este resultado proviene de una llamada a mssql_query().
Devuelve TRUE
si dispone de un conjunto de resultados adicional o FALSE
en caso contrario.
Ejemplo #1 Ejemplo de mssql_next_result()
<?php
// Conectar a MSSQL y seleccionar la base de datos
$link = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $link);
// Enviar una consulta a MSSQL
$sql = 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$query = mssql_query($sql, $link);
// Iterar a través de registros devueltos
do {
while ($row = mssql_fetch_row($query)) {
// Manejar registros ...
}
} while (mssql_next_result($query));
// Liberar
mssql_free_result($query);
mssql_close($link);
?>
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.
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);
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.
It seems that mssql_next_result does not work with result sets returned by stored procedures.
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.