int mysql_stmt_next_result(MYSQL_STMT *mysql)
Description
This function is used when you use prepared
CALL statements to execute stored
procedures, which can return multiple result sets. Use a loop
that calls
mysql_stmt_next_result() to
determine whether there are more results. If a procedure has
OUT or INOUT parameters,
their values will be returned as a single-row result set
following any other result sets. The values will appear in the
order in which they are declared in the procedure parameter
list.
mysql_stmt_next_result() returns
a status to indicate whether more results exist. If
mysql_stmt_next_result() returns
an error, there are no more results.
Before each call to
mysql_stmt_next_result(), you
must call
mysql_stmt_free_result() for the
current result if it produced a result set (rather than just a
result status).
After calling
mysql_stmt_next_result() the
state of the connection is as if you had called
mysql_stmt_execute(). This means
that you can call
mysql_stmt_bind_result(),
mysql_stmt_affected_rows(), and
so forth.
It is also possible to test whether there are more results by
calling mysql_more_results().
However, this function does not change the connection state, so
if it returns true, you must still call
mysql_stmt_next_result() to
advance to the next result.
For an example that shows how to use
mysql_stmt_next_result(), see
Section 22.9.16, “C API Support for Prepared CALL
Statements”.
mysql_stmt_next_result() was
added in MySQL 5.5.3.
Return Values
| Return Value | Description |
|---|---|
| 0 | Successful and there are more results |
| -1 | Successful and there are no more results |
| >0 | An error occurred |
Errors
Commands were executed in an improper order.
The MySQL server has gone away.
The connection to the server was lost during the query.
An unknown error occurred.