6.4.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. По умолчанию равно 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.