PDF (US Ltr) - 1.4Mb
PDF (A4) - 1.4Mb
Press CTRL+C to copybool 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()
,因为该函数会导致结果集缓存在客户端。
以下示例为预处理语句打开了一个游标,并将一次获取的行数设置为 5
Press CTRL+C to copyMYSQL_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 ... */