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.4-en/mysql-stmt-attr-set.html

Spec-Zone.ru

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