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 ... */