![background image](http://html1.mh-extra.com/html/oracle/5-0/5-0_reference-manual_16461962229.webp)
C API Prepared Statement Function Descriptions
2209
If a fetched data value is a
NULL
value, the
*is_null
value of the corresponding
MYSQL_BIND
structure contains TRUE (1). Otherwise, the data and its length are returned in the
*buffer
and
*length
elements based on the buffer type specified by the application. Each numeric and temporal
type has a fixed length, as listed in the following table. The length of the string types depends on the
length of the actual data value, as indicated by
data_length
.
Type
Length
MYSQL_TYPE_TINY
1
MYSQL_TYPE_SHORT
2
MYSQL_TYPE_LONG
4
MYSQL_TYPE_LONGLONG
8
MYSQL_TYPE_FLOAT
4
MYSQL_TYPE_DOUBLE
8
MYSQL_TYPE_TIME
sizeof(MYSQL_TIME)
MYSQL_TYPE_DATE
sizeof(MYSQL_TIME)
MYSQL_TYPE_DATETIME
sizeof(MYSQL_TIME)
MYSQL_TYPE_STRING
data length
MYSQL_TYPE_BLOB
data_length
In some cases you might want to determine the length of a column value before fetching it with
mysql_stmt_fetch()
. For example, the value might be a long string or
BLOB
value for which you
want to know how much space must be allocated. To accomplish this, you can use these strategies:
• Before invoking
mysql_stmt_fetch()
to retrieve individual rows, pass
STMT_ATTR_UPDATE_MAX_LENGTH
to
mysql_stmt_attr_set()
, then invoke
mysql_stmt_store_result()
to buffer the entire result on the client side. Setting
the
STMT_ATTR_UPDATE_MAX_LENGTH
attribute causes the maximal length of column
values to be indicated by the
max_length
member of the result set metadata returned by
mysql_stmt_result_metadata()
.
• Invoke
mysql_stmt_fetch()
with a zero-length buffer for the column in question and a pointer in
which the real length can be stored. Then use the real length with
mysql_stmt_fetch_column()
.
real_length= 0;
bind[0].buffer= 0;
bind[0].buffer_length= 0;
bind[0].length= &real_length
mysql_stmt_bind_result(stmt, bind);
mysql_stmt_fetch(stmt);
if (real_length > 0)
{
data= malloc(real_length);
bind[0].buffer= data;
bind[0].buffer_length= real_length;
mysql_stmt_fetch_column(stmt, bind, 0, 0);
}
Return Values
Return Value
Description
0
Successful, the data has been fetched to application data buffers.
1
Error occurred. Error code and message can be obtained by
calling
mysql_stmt_errno()
and
mysql_stmt_error()
.
MYSQL_NO_DATA
No more rows/data exists
MYSQL_DATA_TRUNCATED
Data truncation occurred
Содержание 5.0
Страница 1: ...MySQL 5 0 Reference Manual ...
Страница 18: ...xviii ...
Страница 60: ...40 ...
Страница 396: ...376 ...
Страница 578: ...558 ...
Страница 636: ...616 ...
Страница 844: ...824 ...
Страница 1234: ...1214 ...
Страница 1426: ...MySQL Proxy Scripting 1406 The following diagram shows an overview of the classes exposed by MySQL Proxy ...
Страница 1427: ...MySQL Proxy Scripting 1407 ...
Страница 1734: ...1714 ...
Страница 1752: ...1732 ...
Страница 1783: ...Configuring Connector ODBC 1763 ...
Страница 1793: ...Connector ODBC Examples 1773 ...
Страница 1839: ...Connector Net Installation 1819 2 You must choose the type of installation to perform ...
Страница 1842: ...Connector Net Installation 1822 5 Once the installation has been completed click Finish to exit the installer ...
Страница 1864: ...Connector Net Visual Studio Integration 1844 Figure 20 24 Debug Stepping Figure 20 25 Function Stepping 1 of 2 ...
Страница 2850: ...2830 ...
Страница 2854: ...2834 ...
Страница 2928: ...2908 ...
Страница 3000: ...2980 ...
Страница 3122: ...3102 ...
Страница 3126: ...3106 ...
Страница 3174: ...3154 ...
Страница 3232: ...3212 ...