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 ушел.
Соединение с сервером было потеряно во время запроса.
Произошла неизвестная ошибка.