|
Spec-Zone .ru
спецификации, руководства, описания, API
|
int mysql_next_result(MYSQL *mysql)
Эта функция используется, когда Вы выполняете многократные операторы, определенные как единственная строка
оператора, или когда Вы используете CALL
операторы, чтобы выполнить хранимые процедуры, которые могут возвратить многократные наборы результатов.
mysql_next_result() читает следующий результат оператора и возвращает состояние,
чтобы указать, существует ли больше результатов. Если mysql_next_result() возвращает ошибку, нет больше результатов.
Перед каждым звонком mysql_next_result(),
следует вызвать mysql_free_result()
для текущего оператора, если это - оператор, который возвратил набор результатов (а не только состояние
результата).
После вызова mysql_next_result()
состояние соединения - то, как будто Вы вызвали mysql_real_query()
или mysql_query() для следующего оператора. Это означает, что можно вызвать mysql_store_result(), mysql_warning_count(), mysql_affected_rows(), и т.д.
Если Ваша программа использует CALL операторы, чтобы выполнить хранимые процедуры, CLIENT_MULTI_RESULTS
флаг должен быть включен. Это то, потому что каждый CALL возвращает результат указать на состояние вызова, в дополнение к любым
наборам результатов, которые могли бы быть возвращены операторами, выполняемыми в пределах процедуры. Поскольку
CALL
может возвратить многократные результаты, обработать их использующий цикл, который вызывает mysql_next_result() определить, есть ли больше результатов.
CLIENT_MULTI_RESULTS может быть включен, когда Вы вызываете mysql_real_connect(), любой явно, передавая CLIENT_MULTI_RESULTS
флаг непосредственно, или неявно передавая CLIENT_MULTI_STATEMENTS (который также
включает CLIENT_MULTI_RESULTS). В MySQL 5.7, CLIENT_MULTI_RESULTS
включается по умолчанию.
Также возможно протестировать, есть ли больше результатов, вызывая mysql_more_results(). Однако, эта функция не изменяет состояние соединения, так,
если это возвращает true, следует все еще вызвать mysql_next_result() совершенствоваться к следующему результату.
Для примера, который показывает, как использовать mysql_next_result(), см. Раздел
21.8.17, "Поддержка API C Многократного Выполнения Оператора".
| Возвращаемое значение | Описание |
|---|---|
| 0 | Успешный и есть больше результатов |
| -1 | Успешный и нет больше результатов |
| >0 | Ошибка произошла |
Команды выполнялись в неподходящем порядке. Например, если Вы не вызывали mysql_use_result() для предыдущего набора результатов.
Сервер MySQL ушел.
Соединение с сервером было потеряно во время запроса.
Произошла неизвестная ошибка.