25.2.7.3. mysql_stmt_attr_set()
int mysql_stmt_attr_set(MYSQL_STMT *stmt, enum
enum_stmt_attr_type option, const void *arg)
Description
Can be used to affect behavior for a prepared statement. This
function may be called multiple times to set several options.
The option
argument is the option that you
want to set; the arg
argument is the value
for the option. If the option is an integer, then
arg
should point to the value of the
integer.
Possible option
values:
If you use the STMT_ATTR_CURSOR_TYPE
option
with CURSOR_TYPE_READ_ONLY
, a cursor is
opened for the statement when you invoke
mysql_stmt_execute()
. If there is already
an open cursor from a previous
mysql_stmt_execute()
call, it closes the
cursor before opening a new one.
mysql_stmt_reset()
also closes any open
cursor before preparing the statement for re-execution.
mysql_stmt_free_result()
closes any open
cursor.
If you open a cursor for a prepared statement,
mysql_stmt_store_result()
is unnecessary,
because that function causes the result set to be buffered on
the client side.
The STMT_ATTR_CURSOR_TYPE
option was added
in MySQL 5.0.2. The STMT_ATTR_PREFETCH_ROWS
option was added in MySQL 5.0.6.
Return Values
0
if okay. Non-zero if
option
is unknown.
Errors
None.
Example
The following example opens a cursor for a prepared statement
and sets the number of rows to fetch at a time to 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 ... */