27.7.10.3 mysql_stmt_attr_set()
my_bool mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type option, const void *arg)
Description
可用于影响准备好的语句的行为。可以多次调用此功能以设置多个选项。
option
参数是您要设置的选项。 arg
参数是该选项的值。 arg
应指向设置为所需属性值的变量。变量类型如下 table 所示。
下 table 显示了可能的option
值。
Option | Argument Type | Function |
---|---|---|
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()是不必要的,因为该函数会使结果集在 Client 端进行缓冲。
Return Values
零成功。如果option
未知,则为非零值。
Errors
None.
Example
以下示例为准备好的语句打开一个游标,并将一次要提取的行数设置为 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 ... */