返回首页

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

更改 SQL 语句高速缓存
的用法(SQL 管理 API)
随同 admin() 或 task() 函数,
使用 onmode 和 e 参数来临时地更改 SQL 语句高速缓存
的模式。
语法

用法
如果禁用了 SQL 语句高速缓存,则使用 enable 参数来启用它。仅在执行下列活动之后,
单个用户会话可使用该语句高速缓存:
l 设置环境变量 STMT_CACHE 为 1。
l 执行 SQL 语句 SET STATEMENT CACHE ON。
使用 flush 参数来从 SQL 语句高速缓存清空不使用的语句,
SQL 语句高速缓存保持启用。
清空高速缓存之后,onstat -g ssc ref_cnt 域显示为 0。
使用 off 参数来关闭 SQL 语句高速缓存,以便不高速缓存语句。
使用 on 参数来高速缓存所有语句,除了那些用户通过下列活动之一关闭的之外:
l 使用这个命令来指定 OFF 模式。
l 设置环境变量 STMT_CACHE 为 0。
l 执行 SQL 语句 SET STATEMENT CACHE OFF。
这个函数不可更改 ONCONFIG 文件中 STMT_CACHE 配置参数的设置,但最后的参数覆盖那
个设置(或如果未设置 STMT_CACHE,则为缺省值)。您以这个命令进行的任何语句高速缓
存行为的变更都仅影响当前数据库服务器会话。 当您重启数据库服务器时,数据库服务器

GBase 8s 管理员参考
南大通用数据技术股份有限公司 - 763 -

使用 ONCONFIG 文件中 STMT_CACHE 参数的设置。如果在 ONCONFIG 文件中未定义
STMT_CACHE 配置参数,则服务器不使用语句高速缓存。
这个函数等同于 onmode -e 命令。
示例
下列示例启用 SQL 语句高速缓存:
EXECUTE FUNCTION task("onmode","e","enable");

参数说明:该字段决定帐户密码的最小长度。
该参数属于SIGHUP 类型参数,请参考表15-1 中对应设置方法进行设置。
取值范围:整型,6~999 个字符。
默认值:8