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()

После завершения работы со структурой метаданных набора результатов, освободите её, передав её в функцию 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.4, «Поддержка подготовленных вызовов процедур».

Набор результатов, возвращаемый функцией 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-5.7-en/mysql-stmt-result-metadata.html

Spec-Zone.ru

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