6.4.18 mysql_stmt_next_result()
int
mysql_stmt_next_result(MYSQL_STMT *mysql)
Описание
Эта функция используется при работе с подготовленными операторами для выполнения хранимых процедур, которые могут возвращать несколько наборов результатов. Используйте цикл, вызывающий mysql_stmt_next_result(), чтобы определить, существуют ли дополнительные результаты. Если процедура имеет OUT или INOUT параметра, их значения будут возвращены как набор результатов с одной строкой после любых других наборов результатов. Значения будут отображаться в том порядке, в котором они объявлены в списке параметров процедуры.
Сведения о влиянии необработанных условий на параметры процедур см. в .
mysql_stmt_next_result() возвращает код состояния, указывающий на наличие дополнительных результатов. Если mysql_stmt_next_result() возвращает ошибку, дополнительных результатов нет.
Перед каждым вызовом mysql_stmt_next_result() необходимо вызвать mysql_stmt_free_result() для текущего результата, если он сгенерировал набор результатов (а не только код состояния результата).
После вызова mysql_stmt_next_result() состояние соединения становится таким, как если бы был вызван mysql_stmt_execute(). Это означает, что можно вызвать mysql_stmt_bind_result(), mysql_stmt_affected_rows() и так далее.
Также можно проверить наличие дополнительных результатов, вызвав mysql_more_results(). Однако эта функция не изменяет состояние соединения, поэтому если она возвращает true, необходимо все равно вызвать mysql_stmt_next_result(), чтобы перейти к следующему результату.
Пример использования mysql_stmt_next_result() см. в Разделе 3.6.5, «Поддержка подготовленных операторов CALL».
Значения возврата
| Значение возврата | Описание |
|---|---|
| 0 | Успех, и есть дополнительные результаты |
| -1 | Успех, и больше результатов нет |
| >0 | Произошла ошибка |
Ошибки
-
Команды были выполнены в неправильном порядке.
-
Сервер MySQL ушел.
-
Соединение с сервером было потеряно во время запроса.
-
Произошла неизвестная ошибка.
© 2025 Oracle
Licensed under the GPLv2 License.