Spec-Zone.ru › MySQL Connectors 1.0

6.4.23 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, «Поддержка подготовленных операторов CALL».

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

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

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

Ошибки

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

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

Пример

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

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

Spec-Zone.ru

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