返回首页

gbase数据、南大通用产品文档:GBase8sDecimal 数据类型

更新日期:2024年09月11日

GBase 8s ESQL/C 支持使用 decimal 数据类型的 SQL DECIMAL 和 MONEY 数据
类型。decimal 数据类型是一种独立于机器的方法,代表最多 32 位有效数字,有效值范围
为 10-129 - 10+125。

DECIMAL 数据类型可以使用以下两种格式:
DECIMAL(p) 浮点
当使用 DECIMAL(p) 数据类型定义列时,它总共有 p (< = 32) 个有效位。
DECIMAL(p) 的绝对值范围为 10-130 - 10124。
DECIMAL(p,s) 定点
当使用 DECIMAL(p,s) 数据类型定义列时,它总共有 p (< = 32) 个有效数字(精度)
以及 s (< = p) 位小数部分的总位数(小数位)。
decimal 结构
使用 decimal 数据类型为 DECIMA 类型的数据库值声明主机变量。


GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 110 -

decimal 类型的结构表示 decimal 主机变量中的一个值,如下所示:
#define DECSIZE 16

struct decimal
{
short dec_exp;
short dec_pos;
short dec_ndgts;
char dec_dgts[DECSIZE];
};

typedef struct decimal dec_t;

decimal.h 头文件包含 decimal 结构和 typedefdec_t。将此文件包含在使用任何
decimal 主机变量的所有 C 源文件中,其中包含以下 include 指令:
EXEC SQL include decimal;

decimal 结构以数字对的形式存储。每对都是一个范围在 00 到 99 之间的数字(因
此,可以将一对看作一个 100 位的数字)。下表显示了 decimal 结构的四个部分。

表 4. decimal 结构中的字段
字段
描述
dec_exp
规范化decimal 类型数字的指数。
该数字的标准化形式在最左边数字的
左侧有小数点。该指数表示从左侧计数到位置小数点的数字对的位置(或对
于 100 个数字的数字,为 100 的幂数)。
dec_pos
decimal 类型数字的符号。dec_pos 字段可以假定以下三个值之一:1:
当数字大于等于零
0;当数字小于零
–1:当值为空
dec_ndgts
decimal 类型数中数字对对数(基数为 100 的有效数字的数)。该值
也是 dec_dgts 数组中实体数。
dec_dgts[]
字符数组,保存标准化 decimal 类型数字的有效数字,假定
dec_dgts[0] ! = 0。
数字中的每个字节包含 decimal 类型数字中的下一个有效的基数的

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 111 -

字段
描述
100 位,从 dec_dgts[0] 到 dec_dgts[dec_ndgts]。


下表显示了一些样本 decimal 值。

表 5. decimal 字段值的结构示例

dec_exp
dec_pos
dec_ndgts
dec_dgts[]
-12345.6789
3
0
5
dec_dgts[0] = 01

dec_dgts[1] = 23

dec_dgts[2] = 45

dec_dgts[3] = 67

dec_dgts[4] = 89

参数说明:该参数决定是否审计GBase 8c 用户权限授予和回收的操作。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,0、1。

0 表示关闭审计用户权限授予和回收功能。

1 表示开启审计用户权限授予和回收功能。
默认值:1


GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 49 -

GBase 8s 数据库服务器使用 SQL 数据类型。
要获取关于 GBase 8s SQL 数据类型的详尽信息,请参阅《GBase 8s SQL 指南:参考》、
《GBase 8s SQL 指南:教程》和 《GBase 8s 用户定义的例程和数据类型开发者指南》 。