Wez et al:
I've been writing a chapter on database programming with PHP, using
PDO, and ran across a scenario that has not yet been fulfilled by the
PDO API. Many databases (Apache Derby, DB2, Microsoft SQL Server,
MySQL 5, and PostgreSQL to a certain extent) support stored procedures
that can return multiple result sets. Database APIs typically set the
result set pointer to the first row of the first result set returned,
allow the application to iterate through the rows, and provide some
method to request the second result set from the database server.
In ODBC, for example, you would call SQLFetch() to iterate through the
rows of the first result set, then call SQLNextResult() to request the
next result set.
In the PHP realm, Unified ODBC defines odbc_next_result(); mssql
defines mssql_next_result(); PEAR::DB defines DB_Result:nextResult().
PDO, however, currently provides no means of working with the second
or subsequent result sets returned from a call to a stored procedure.
To build on the established naming practice from existing database
extensions, I propose that the PDO interface define the standard
method:
/* {{{ proto bool PDOStatement::nextResult(void)
Requests the next result set from the database
*/
Thanks,
Dan
Note: somewhat confusingly, mysqli defines mysqli_next_result(), but
this is used to retrieve the results of a multi-query... a very
different thing, and not something I advocate adding to PDO. They
might have trouble disambiguating that from the stored procedure case
when MySQL 5 reaches production status.
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php