int
mysql_stmt_next_result(MYSQL_STMT *mysql)
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.
For information about the effect of unhandled conditions on procedure parameters, see Condition Handling and OUT or INOUT Parameters.
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 3.6.4, “Prepared CALL Statement Support”.
Return Value | Description |
---|---|
0 | Successful and there are more results |
-1 | Successful and there are no more results |
>0 | An error occurred |
-
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.