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.