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。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |