acid: mehrere recordsets auswerten (ODBC - PHP)

hallo,

ich führe über ODBC eine gespeicherte prozedur auf einem MS-SQL server aus. diese prozedur liefert n recordsets (mehrere - beliebig viele jedoch mindestens eins)

dazu fällt mir jetzt spontan eine do-while schleife ein. in den funktionsbeschreibungen zur neuen mysql erweiterung findet man ein beispiel dazu in der php-documentation.

die odbc-dokumentation ist allerdings etwas dürftig mit beispielen besetzt.

das einzigste was ich finde ist odbc_next_result()
das liefert aber nur TRUE|FALSE - ob es mehrere recordsets gibt.

ich finde keine möglichkeit das nächste recordset einzulesen und auszuwerten.

die mysql-variante:
$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query))
{
   do
   {
       /* store first result set */
       if ($result = $mysqli->store_result())
       {
           while ($row = $result->fetch_row())
           {
               printf("%s\n", $row[0]);
           }
           $result->close();
       }
       /* print divider */
       if ($mysqli->more_results())
       {
           printf("-----------------\n");
       }
   }while ($mysqli->next_result());
}

----------------------------------------------------------------

odbc_next_result() ist mit $mysqli->more_results() gleichzusetzen. aber mir fehlt die $mysqli->next_result() für odbc.

hat jemand eine idee?
oder hab ich hier was übersehen...

vielen dank

  1. echo $begrüßung;

    ich führe über ODBC eine gespeicherte prozedur auf einem MS-SQL server aus. diese prozedur liefert n recordsets (mehrere - beliebig viele jedoch mindestens eins)

    das einzigste was ich finde ist odbc_next_result()

    "Einzig" ist schon wenig genug. Das noch steigern zu wollen bringt keine Punkte.

    das liefert aber nur TRUE|FALSE - ob es mehrere recordsets gibt.
    ich finde keine möglichkeit das nächste recordset einzulesen und auszuwerten.
    hat jemand eine idee?

    Vielleicht stellt diese Funktion es auch gleich bereit, so dass du danach mit der gleichen result_id weiterfetchen kannst. Leider ist die Dokumentation zu dieser Funktion quasi nicht vorhanden. Auch das Nachsehen in den PHP-Quellen brachte keine für mich eindeutige Antwort. Mangels passendem System kann ich meine Vermutung nicht nachprüfen.

    echo "$verabschiedung $name";

  2. hallo,

    es ist tatsächlich so, dass die funktion odbc_next_result() den zugriff auf das nächste recordset ermöglicht. die funktionsbeschreibung in der php-documentation ist unzureichend.

    code:
    -------------------------------------------------
    do
    {
     while ($row = odbc_fetch_array($reportResult))    {

    }
    } while (odbc_next_result($reportResult));
    -------------------------------------------------

    vielen dank nochmal