Spec-Zone .ru
спецификации, руководства, описания, API

21.8.7.46. mysql_next_result()

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 Ошибка произошла

Ошибки