在嵌入式 SQL 应用程序中,发送和检索 LONG VARCHAR、LONG NVARCHAR 和 LONG BINARY 值的方法与发送和检索其它数据类型的值的方法不同。标准 SQLDA 字段包含的数据不得超过 32767 字节,因为保存长度信息的字段(sqldata、sqllen 和 sqlind)是 16 位的值。将这些值更改为 32 位值会破坏现有的应用程序。
说明 LONG VARCHAR、LONG NVARCHAR 和 LONG BINARY 值的方法与说明其它数据类型的值的方法相同。
有关如何检索和发送值的信息,请参见检索 LONG 数据和发送 LONG 数据。
使用单独的字段来保存 LONG BINARY、LONG VARCHAR 和 LONG NVARCHAR 数据类型的已分配长度、已存储长度和未截断长度。静态 SQL 数据类型在 sqlca.h 中定义如下:
#define DECL_LONGVARCHAR( size ) \ struct { a_sql_uint32 array_len; \ a_sql_uint32 stored_len; \ a_sql_uint32 untrunc_len; \ char array[size+1];\ } #define DECL_LONGNVARCHAR( size ) \ struct { a_sql_uint32 array_len; \ a_sql_uint32 stored_len; \ a_sql_uint32 untrunc_len; \ char array[size+1];\ } #define DECL_LONGBINARY( size ) \ struct { a_sql_uint32 array_len; \ a_sql_uint32 stored_len; \ a_sql_uint32 untrunc_len; \ char array[size]; \ } |
对于动态 SQL,根据需要将 sqltype 字段设置为 DT_LONGVARCHAR、DT_LONGNVARCHAR 或 DT_LONGBINARY。关联的 LONGVARCHAR、LONGNVARCHAR 和 LONGBINARY 结构如下:
typedef struct LONGVARCHAR { a_sql_uint32 array_len; a_sql_uint32 stored_len; a_sql_uint32 untrunc_len; char array[1]; } LONGVARCHAR, LONGNVARCHAR, LONGBINARY; |
对于静态和动态 SQL 结构,结构成员定义如下:
array_len (发送和检索。)为结构中数组部分分配的字节数。
stored_len (发送和检索。)数组中存储的字节数。总是小于或等于 array_len 和 untrunc_len。
untrunc_len (仅检索。)值不被截断的情况下数组中将存储的字节数。总是大于或等于 stored_len。如果发生截断,则此值大于 array_len。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |