Spec-Zone .ru
спецификации, руководства, описания, API

21.8.11.3. mysql_stmt_attr_set()

my_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 my_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Значение по умолчанию.The 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 ... */