Spec-Zone.ru › MySQL Connectors 1.0

6.4.24 mysql_stmt_result_metadata()

MYSQL_RES *
mysql_stmt_result_metadata(MYSQL_STMT *stmt)

Описание

Функция mysql_stmt_result_metadata() используется для получения метаданных набора результатов для подготовленного запроса. Её использование требует, чтобы запрос, при выполнении с помощью mysql_stmt_execute(), генерировал набор результатов.

Функцию mysql_stmt_result_metadata() можно вызвать после подготовки запроса с помощью mysql_stmt_prepare() и до закрытия обработчика запроса. Метаданные набора результатов, возвращаемые функцией mysql_stmt_result_metadata(), представляют собой указатель на структуру MYSQL_RES, которую можно использовать для обработки метаинформации, такой как количество полей и информация об отдельных полях. Этот указатель на набор результатов можно передавать в качестве аргумента любой из функций API, работающих с полями и обрабатывающих метаданные набора результатов, таких как:

  • mysql_num_fields()

  • mysql_fetch_field()

  • mysql_fetch_field_direct()

  • mysql_fetch_fields()

  • mysql_field_count()

  • mysql_field_seek()

  • mysql_field_tell()

  • mysql_free_result()

Если клиент подавил метаданные (как описано в разделе 3.6.7 «Необязательные метаданные набора результатов»), структура MYSQL_RES содержит заполненное число полей, но не содержит информацию о полях.

После завершения работы со структурой метаданных набора результатов, освободите её, передав её в функцию mysql_free_result(). Это аналогично освобождению структуры набора результатов, полученной при вызове mysql_store_result().

Если вы вызываете mysql_stmt_result_metadata() после mysql_stmt_prepare() но до mysql_stmt_execute(), типы столбцов в метаданных определяются оптимизатором. Если вы вызываете mysql_stmt_result_metadata() после mysql_stmt_execute(), типы столбцов в метаданных соответствуют фактически присутствующим в наборе результатов. В большинстве случаев они должны совпадать.

Если выполняемый запрос является запросом CALL, он может генерировать несколько наборов результатов. В этом случае не вызывайте mysql_stmt_result_metadata() сразу после mysql_stmt_prepare(). Вместо этого проверяйте метаданные для каждого набора результатов отдельно после вызова mysql_stmt_execute(). Пример такого подхода см. в разделе 3.6.5 «Поддержка подготовленных вызовов процедур».

Набор результатов, возвращаемый функцией mysql_stmt_result_metadata(), содержит только метаданные. Он не содержит результатов строк. Для получения результатов строк используйте обработчик запроса с функцией mysql_stmt_fetch() после выполнения запроса с помощью mysql_stmt_execute(), как обычно.

Значения возвращаемых данных

Структура результата MYSQL_RES. NULL, если для подготовленного запроса нет метаинформации.

Ошибки

  • Недостаточно памяти.

  • Произошла неизвестная ошибка.

Пример

См. пример в разделе 6.4.12 «mysql_stmt_fetch()».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/c-api-8.4-en/mysql-stmt-result-metadata.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API