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 — Bewegt den internen Ergebnis-Zeiger zum nächsten Ergebnis
Diese Funktion wurde in PHP 7.0.0 REMOVED (entfernt).
Alternativ können folgende Features verwendet werden:
$result_id
) : boolWird mehr als eine SQL-Anweisung an den Server geschickt oder eine Stored Procedure mit mehreren Ergebnissen ausgeführt, dann liefert der Server mehrere Ergebnisse. Diese Funktion prüft, ob vom Server noch weitere Ergebnisse angeboten werden. Wenn es ein weiteres Ergebnis gibt, gibt sie das existierende Ergebnis frei und bereitet das nächste Ergebnis vor.
result_id
Der Bezeichner des Ergebnisses, das ausgewertet wird. Dieses Ergebnis stammt von einem Aufruf von mssql_query().
Gibt TRUE
zurück, falls ein weiteres Ergebnis vorliegt, andernfalls
FALSE
.
Beispiel #1 mssql_next_result()-Beispiel
<?php
// Mit MSSQL verbinden und Datenbank auswählen
$verbindung = mssql_connect('MANGO\SQLEXPRESS', 'sa', 'phpfi');
mssql_select_db('php', $verbindung);
// Eine Anfrage an MSSQL senden
$sql = 'SELECT [name], [age] FROM [php].[dbo].[persons]';
$anfrage = mssql_query($sql, $verbindung);
// Die gefundenen Datensätze durchgehen
do {
while ($datensatz = mssql_fetch_row($anfrage)) {
// Datensatz verarbeiten ...
}
} while (mssql_next_result($anfrage));
// Aufräumen
mssql_free_result($anfrage);
mssql_close($verbindung);
?>
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.