int mysql_stmt_store_result(MYSQL_STMT *stmt)
Description
Result sets are produced by executing prepared statements for
SQL statements such as SELECT
,
SHOW
,
DESCRIBE
, and
EXPLAIN
. By default, result sets
for successfully executed prepared statements are not buffered
on the client and
mysql_stmt_fetch()
fetches them
one at a time from the server. To cause the complete result set
to be buffered on the client, call
mysql_stmt_store_result()
after
binding data buffers with
mysql_stmt_bind_result()
and
before calling
mysql_stmt_fetch()
to fetch
rows. (For an example, see Section 20.8.7.11, “mysql_stmt_fetch()
”.)
mysql_stmt_store_result()
is
optional for result set processing, unless you will call
mysql_stmt_data_seek()
,
mysql_stmt_row_seek()
, or
mysql_stmt_row_tell()
. Those
functions require a seekable result set.
It is unnecessary to call
mysql_stmt_store_result()
after
executing an SQL statement that does not produce a result set,
but if you do, it does not harm or cause any notable performance
problem. You can detect whether the statement produced a result
set by checking if
mysql_stmt_result_metadata()
returns NULL
. For more information, refer to
Section 20.8.7.22, “mysql_stmt_result_metadata()
”.
MySQL doesn't by default calculate
MYSQL_FIELD->max_length
for all columns
in mysql_stmt_store_result()
because calculating this would slow down
mysql_stmt_store_result()
considerably and most applications don't need
max_length
. If you want
max_length
to be updated, you can call
mysql_stmt_attr_set(MYSQL_STMT,
STMT_ATTR_UPDATE_MAX_LENGTH, &flag)
to enable
this. See Section 20.8.7.3, “mysql_stmt_attr_set()
”.
Return Values
Zero if the results are buffered successfully. Nonzero if an error occurred.
Errors
Commands were executed in an improper order.
Out of memory.
The MySQL server has gone away.
The connection to the server was lost during the query.
An unknown error occurred.
User Comments
Add your own comment.