Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL » SQL 描述符区域 (SQLDA) » SQLDA sqllen 字段值

 

DESCRIBE 后的 SQLDA sqllen 字段值

DESCRIBE 语句获取有关主机变量的信息(这些主机变量是存储从数据库检索的数据或将数据传递到数据库时所必需的)。

下表为各种数据库类型指明由 DESCRIBE 语句返回的 sqllen 和 sqltype 结构成员的值(SELECT LIST 和 BIND VARIABLE DESCRIBE 语句)。对于用户定义的数据库数据类型,则对基类型进行说明。

您的程序可以使用从 DESCRIBE 返回的类型和长度,也可以使用另一种类型。数据库服务器在任意两种类型之间执行类型转换。由 sqldata 字段指向的内存必须对应于 sqltype 和 sqllen 字段。嵌入式 SQL 类型通过对 sqltype 和 DT_TYPES 进行按位“与”操作 (sqltype & DT_TYPES) 来获得。

数据库字段类型 返回的嵌入式 SQL 类型 说明时返回的长度(以字节为单位)
BIGINT DT_BIGINT 8
BINARY(n) DT_BINARY n
BIT DT_BIT 1
CHAR(n) DT_FIXCHAR1 从数据库字符集转换为客户端的 CHAR 字符集时,为最大数据扩展的 n 倍。如果长度超过 32767 字节,则返回的嵌入式 SQL 类型是长度为 32767 字节的 DT_LONGVARCHAR。
CHAR(n CHAR) DT_FIXCHAR1 客户端的 CHAR 字符集中最大字符长度的 n 倍如果长度超过 32767 字节,则返回的嵌入式 SQL 类型是长度为 32767 字节的 DT_LONGVARCHAR。
DATE DT_DATE 最长的带格式字符串的长度
DECIMAL(p,s) DT_DECIMAL SQLDA 中长度字段的低位字节设置为 p,高位字节设置为 s。请参见 sqlda.h 中的 PRECISION 和 SCALE 宏。
DOUBLE DT_DOUBLE 8
FLOAT DT_FLOAT 4
INT DT_INT 4
LONG BINARY DT_LONGBINARY 32767
LONG NVARCHAR DT_LONGVARCHAR/DT_LONGNVARCHAR2 32767
LONG VARCHAR DT_LONGVARCHAR 32767
NCHAR(n) DT_FIXCHAR/DT_NFIXCHAR2 客户端的 NCHAR 字符集中最大字符长度的 n 倍如果长度超过 32767 字节,则返回的嵌入式 SQL 类型是长度为 32767 字节的 DT_LONGNVARCHAR。
NVARCHAR(n) DT_VARCHAR/DT_NVARCHAR2 客户端的 NCHAR 字符集中最大字符长度的 n 倍如果长度超过 32767 字节,则返回的嵌入式 SQL 类型是长度为 32767 字节的 DT_LONGNVARCHAR。
REAL DT_FLOAT 4
SMALLINT DT_SMALLINT 2
TIME DT_TIME 最长的带格式字符串的长度
TIMESTAMP DT_TIMESTAMP 最长的带格式字符串的长度
TINYINT DT_TINYINT 1
UNSIGNED BIGINT DT_UNSBIGINT 8
UNSIGNED INT DT_UNSINT 4
UNSIGNED SMALLINT DT_UNSSMALLINT 2
VARCHAR(n) DT_VARCHAR1 从数据库字符集转换为客户端的 CHAR 字符集时,为最大数据扩展的 n 倍。如果长度超过 32767 字节,则返回的嵌入式 SQL 类型是长度为 32767 字节的 DT_LONGVARCHAR。
VARCHAR(n CHAR) DT_VARCHAR1 客户端的 CHAR 字符集中最大字符长度的 n 倍如果长度超过 32767,则返回的嵌入式 SQL 类型是长度为 32767 的 DT_LONGVARCHAR。

1 如果客户端 CHAR 字符集中的最大字节长度超过 32767 字节,为 CHAR 和 VARCHAR 返回的类型可能是 DT_LONGVARCHAR。

2 如果客户端 NCHAR 字符集中的最大字节长度超过 32767 字节,为 NCHAR 和 NVARCHAR 返回的类型可能是 DT_LONGNVARCHAR。缺省情况下,NCHAR、NVARCHAR 和 LONG NVARCHAR 分别被描述为 DT_FIXCHAR、DT_VARCHAR 和 DT_LONGVARCHAR。如果调用了 db_change_nchar_charset 函数,则这些类型被分别描述为 DT_NFIXCHAR、DT_NVARCHAR 和 DT_LONGNVARCHAR。

 另请参见