Spec-Zone .ru
спецификации, руководства, описания, API
|
my_bool mysql_stmt_attr_set(MYSQL_STMT *stmt, enum enum_stmt_attr_type option, const void
*arg)
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. arg
should point to a variable that is set to
the desired attribute value. The variable type is as indicated in the following table.
The following table shows the possible option
values.
Option | Argument Type | Function |
---|---|---|
STMT_ATTR_UPDATE_MAX_LENGTH |
my_bool * |
If set to 1, causes mysql_stmt_store_result()
to update the metadata MYSQL_FIELD->max_length value.
|
STMT_ATTR_CURSOR_TYPE |
unsigned long * |
Type of cursor to open for statement when mysql_stmt_execute() is invoked. *arg
can be CURSOR_TYPE_NO_CURSOR (the default) or CURSOR_TYPE_READ_ONLY .
|
STMT_ATTR_PREFETCH_ROWS |
unsigned long * |
Number of rows to fetch from server at a time when using a cursor. *arg
can be in the range from 1 to the maximum value of unsigned long .The
default is 1.
|
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.
Zero if successful. Nonzero if option
is unknown.
None.
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 ... */