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

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - 编程 » 嵌入式 SQL » 嵌入式 SQL 中的主机变量

 

C 主机变量类型

仅有有限数量的 C 数据类型可作为主机变量。而且,某些主机变量类型没有对应的 C 类型。

sqlca.h 头文件中定义的宏可用于声明以下类型的主机变量:NCHAR、VARCHAR、NVARCHAR、LONGVARCHAR、LONGNVARCHAR、BINARY、LONGBINARY、DECIMAL、DT_FIXCHAR、DT_NFIXCHAR、DATETIME (SQLDATETIME)、BIT、BIGINT 或 UNSIGNED BIGINT。它们的使用方法如下所示:



EXEC SQL BEGIN DECLARE SECTION;
DECL_NCHAR                 v_nchar[10];
DECL_VARCHAR( 10 )         v_varchar;
DECL_NVARCHAR( 10 )        v_nvarchar;
DECL_LONGVARCHAR( 32768 )  v_longvarchar;
DECL_LONGNVARCHAR( 32768 ) v_longnvarchar;
DECL_BINARY( 4000 )        v_binary;
DECL_LONGBINARY( 128000 )  v_longbinary;
DECL_DECIMAL( 30, 6 )      v_decimal;
DECL_FIXCHAR( 10 )         v_fixchar;
DECL_NFIXCHAR( 10 )        v_nfixchar;
DECL_DATETIME              v_datetime;
DECL_BIT                   v_bit;
DECL_BIGINT                v_bigint;
DECL_UNSIGNED_BIGINT       v_ubigint;
EXEC SQL END DECLARE SECTION;

预处理器能够识别嵌入式 SQL 声明部分中的这些宏,并可将变量视为相应的类型。建议不要使用 DECIMAL(DT_DECIMAL、DECL_DECIMAL)类型,因为十进制数值的格式为专有格式。

下表列出了允许用于主机变量的 C 变量类型及其对应的嵌入式 SQL 接口数据类型。

C 数据类型 嵌入式 SQL 接口类型 说明
short              si;
short int          si;
DT_SMALLINT 16 位有符号整数。
unsigned short int usi;
DT_UNSSMALLINT 16 位无符号整数。
long              l;
long int          l;
DT_INT 32 位有符号整数。
unsigned long int ul;
DT_UNSINT 32 位无符号整数。
DECL_BIGINT       ll;
DT_BIGINT 64 位有符号整数。
DECL_UNSIGNED_BIGINT ull;
DT_UNSBIGINT 64 位无符号整数。
float f;
DT_FLOAT 4 字节单精度浮点值。
double d;
DT_DOUBLE 8 字节双精度浮点值。
char a[n]; /*n>=1*/
DT_STRING 在 CHAR 字符集中以空值终止的字符串。如果数据库是使用填补空白的字符串进行的初始化,则该字符串便是用空白填补的。此变量占有 n-1 个字符加上空终止符。
char *a;
DT_STRING 在 CHAR 字符集中以空值终止的字符串。此变量指向一个可保存最多 32766 个字节加上空终止符的区域。
DECL_NCHAR a[n]; /*n>=1*/
DT_NSTRING 在 NCHAR 字符集中以空值终止的字符串。如果数据库是使用填补空白的字符串进行的初始化,则该字符串便是用空白填补的。此变量占有 n-1 个字符加上空终止符。
DECL_NCHAR *a;
DT_NSTRING 在 NCHAR 字符集中以空值终止的字符串。此变量指向一个可保存最多 32766 个字节加上空终止符的区域。
DECL_VARCHAR(n) a;
DT_VARCHAR 在 CHAR 字符集中具有双字节长度字段的变长字符串。不是以空值终止的或以空白填补的。n 的最大值为 32765(字节)。
DECL_NVARCHAR(n) a;
DT_NVARCHAR 在 NCHAR 字符集中具有双字节长度字段的变长字符串。不是以空值终止的或以空白填补的。n 的最大值为 32765(字节)。
DECL_LONGVARCHAR(n) a;
DT_LONGVARCHAR 在 CHAR 字符集中具有三个 4 字节长度字段的变长长字符串。不是以空值终止的或以空白填补的。
DECL_LONGNVARCHAR(n) a;
DT_LONGNVARCHAR 在 NCHAR 字符集中具有三个 4 字节长度字段的变长长字符串。不是以空值终止的或以空白填补的。
DECL_BINARY(n) a;
DT_BINARY 具有长度为 2 个字节的字段的变长二进制数据。n 的最大值为 32765(字节)。
DECL_LONGBINARY(n) a;
DT_LONGBINARY 具有三个长度为 4 个字节的字段的长型变长二进制数据。
char            a; /*n=1*/ 
DECL_FIXCHAR(n) a;
DT_FIXCHAR 在 CHAR 字符集中固定长度的字符串。是填补空白的但不是以空值终止的。n 的最大值为 32767(字节)。
DECL_NCHAR       a; /*n=1*/
DECL_NFIXCHAR(n) a;
DT_NFIXCHAR 在 NCHAR 字符集中固定长度的字符串。是填补空白的但不是以空值终止的。n 的最大值为 32767(字节)。
DECL_DATETIME a;
DT_TIMESTAMP_STRUCT SQLDATETIME 结构
 字符集
 数据长度
 字符指针
 主机变量的范围
 另请参见