Spec-Zone.ru › MySQL Connectors 1.0

6.4.3 mysql_stmt_attr_set()

bool
mysql_stmt_attr_set(MYSQL_STMT *stmt,
                    enum enum_stmt_attr_type option,
                    const void *arg)

Описание

Может использоваться для изменения поведения подготовленного запроса. Данную функцию можно вызывать несколько раз для установки нескольких опций.

Аргумент option — это опция, которую вы хотите установить. Аргумент arg — значение для этой опции. arg должен указывать на переменную, содержащую желаемое значение атрибута. Тип переменной указан в следующей таблице.

В следующей таблице показаны возможные значения option.

Опция Тип аргумента Функция
STMT_ATTR_UPDATE_MAX_LENGTH bool * Если установлено в 1, вызывает mysql_stmt_store_result() для обновления метаданных MYSQL_FIELD->max_length.
STMT_ATTR_CURSOR_TYPE unsigned long * Тип курсора, который будет открыт для запроса при вызове mysql_stmt_execute(). *arg может быть CURSOR_TYPE_NO_CURSOR (по умолчанию) или CURSOR_TYPE_READ_ONLY.
STMT_ATTR_PREFETCH_ROWS unsigned long * Количество строк, извлекаемых с сервера за раз при использовании курсора. *arg может принимать значения от 1 до максимального значения unsigned long. По умолчанию значение равно 1.

Если используется опция STMT_ATTR_CURSOR_TYPE с CURSOR_TYPE_READ_ONLY, курсор открывается для запроса при вызове mysql_stmt_execute(). Если уже открыт курсор из предыдущего вызова mysql_stmt_execute(), он закрывается перед открытием нового. mysql_stmt_reset() также закрывает любой открытый курсор перед подготовкой запроса для повторного выполнения. mysql_stmt_free_result() закрывает любой открытый курсор.

Если вы открываете курсор для подготовленного запроса, mysql_stmt_store_result() не требуется, поскольку эта функция буферизует результат на стороне клиента.

Возвращаемые значения

Ноль в случае успеха. Неноль, если option неизвестно.

Ошибки

Нет.

Пример

В следующем примере открывается курсор для подготовленного запроса и устанавливается количество извлекаемых строк за раз в 5:

MYSQL_STMT *stmt;
int rc;
unsigned long type;
unsigned long prefetch_rows = 5;

stmt = mysql_stmt_init(mysql);
type = (unsigned long) CURSOR_TYPE_READ_ONLY;
rc = mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*) &type);
/* ... check return value ... */
rc = mysql_stmt_attr_set(stmt, STMT_ATTR_PREFETCH_ROWS,
                         (void*) &prefetch_rows);
/* ... check return value ... */

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

Spec-Zone.ru

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