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.