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);
mssql_next_result
(PHP 4 >= 4.0.5, PHP 5, PECL odbtp >= 1.1.1)
mssql_next_result — Mover el puntero interno del resultado al siguiente resultado
Descripción
$result_id
)Al 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.
Parámetros
-
result_id -
El recurso de resultado que se está evaluando. Este resultado proviene de una llamada a mssql_query().
Valores devueltos
Devuelve TRUE si dispone de un conjunto de resultados adicional o FALSE
en caso contrario.
Ejemplos
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.
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.
It seems that mssql_next_result does not work with result sets returned by stored procedures.
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.
