返回首页

gbase数据、南大通用产品文档:GBase8sdectoint() 函数

更新日期:2024年09月11日

dectoint() 函数将 decimal 类型数值转换为 C int 类型数值。
语法

mint dectoint(dec_val, int_val)
dec_t *dec_val;
mint *int_val;
dec_val
指向 dectoint() 将其值转换为 mint 类型值的 decimal 结构的指针。
int_val
指向 dectoint() 放置转换的结果处的 mint 值的指针。

用法
dectoint() 库函数将 decimal 值转换为 C 整数。该 C 整数的大小依赖于您正在使用
的计算机的硬件和操作系统。因此,dectoint() 函数将整数值等同于 SQL SMALLINT 数
据类型。SMALLINT 有效范围在 32767 与 -32767 之间。要将较大的 decimal 转换为较
大的整数,请使用 dectoint() 库函数。

返回代码

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

0
转换成功。
<0
转换失败。
-1200
decimal 类型数值的大小大于 32767。

示例

demo 目录中的文件 dectoint.ec 包含下列样例程序。
/*
* dectoint.ec *

The following program converts two DECIMAL numbers to integers and displays the result
of each conversion.
*/

#include

EXEC SQL include decimal;

char string1 [] = "32767";
char string2 [] = "32768";

main()
{
mint x;
mint n = 0;
dec_t num;

printf("DECTOINT Sample ESQL Program running.\n\n)";

printf("String 1 = %s\n", string1);

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

if (x = deccvasc(string1,strlen(string1), #))
{
printf(" Error %d in converting string1 to decimal\n", x);
exit(1);
}
if (x = dectoint(#, &n))
printf(" Error %d in converting decimal to int\n", x);
else
printf(" Result = %d\n", n);

printf("\nString 2 = %s\n", string2);
if (x = deccvasc(string2, strlen(string2), #))
{
printf(" Error %d in converting string2 to decimal\n", x);
exit(1);
}
if (x = dectoint(#, &n))
printf(" Error %d in converting decimal to int\n", x);
else
printf(" Result = %d\n", n);

printf("\nDECTOINT Sample Program over.\n\n");
exit(0);
}
输出

DECTOINT Sample ESQL Program running.

String 1 = 32767
Result = 32767

String 2 = 32768
Error -1200 in converting decimal to int

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


DECTOINT Sample Program over.

此语句只能用于Hive表,
如果用户在创建索引时指定 WITH DEFERRED REBUILD
关键字,那么创建的索引是空索引,我们在任何时候都可以使用 ALTER
INDEX…REBUILD 语句创建索引数据。如果之前已经存在索引数据,可以使用此
语句对索引数据进行重建。
语法格式
ALTER INDEX index_name ON table_name [PARTITION partition_spec] REBUILD;

index_name:需要被重建的索引名称

table_name:索引的原始表名

partition_spec:
被更新的索引分区,
如果省略PATITION,
则所有分区上的索引
都会被更新
示例
示例1:更新表 src 上的 src_index_1 索引数据
gbase> alter index src_index_1 on src rebuild;
Query OK, 0 rows affected (Elapsed: 00:00:02.89)

GBase UP 产品手册 5 数据库管理指南
文档版本04(2021-04-21) 南大通用数据技术股份有限公司 668
EVENT

通过使用加密通讯支持模块,GBase 8s 启用网络上的数据传输加密。通过将通讯支持模块
(CSM)
添加至 JDBC 驱动程序,
GBase 8s JDBC Driver Version 2.21.JC5 和后来的版本使
得所有 JDBC 客户机都可用此特性。
GBase 8s JDBC 加密模块是包装在 GBase 8s JDBC .jar 中的 com.gbasedbt.jdbc.Crypto 类。
GBase 8s JDBC 加密 CSM 是使用来自 Java™ 密码技术提供程序的纯 Java 实现。
网络加密语法
要配置网络加密,请设置 CSM 环境变量。下列语法说明 CSM 环境变量和加密选项:
CSM 环境变量语法

option tags
指定加密标记的语法。要获取更多信息,请参阅 option 标记。
config=parameterfile
指定文件中的加密选项。要获取更多信息,请参阅 选项参数。
option 标记
可传至加密 CSM 的 option 标记与服务器或 CSDK 使用的 CSM 配置文件中指定的加
密 option 标记相同。有三个 option 标记:
cipher
定义会话可使用的所有密码。
mac
定义 MAC 生成期间使用的消息认证代码(MAC)键文件,以及使用的 MAC
生成级别。
switch
定义重新商议密码或密钥的频度。保持使用密钥和加密密码的时间越长,攻击
者破解加密规则的可能性越大。要避免这种情况,密码学家建议定期更改长期

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 59 -
连接上的密钥和密码。
此重新商议的缺省值为每小时一次。
通过使用 switch 标
记,可以分钟为单位来设置此重新商议的时间。
要了解这些标记的语法,请参阅《GBase 8s 安全指南》。
用逗号将加密 CSM 选项参数分开,而不使用分号。当使用 DataSource 时,可使
用 getIfxCSM() 和 setIfxCSM() 方法来取得和设置 CSM 为属性。当设置 CSM 为属性时,
请确保未在圆括号中括上 option 字符串。下列为正确地设置 CSM 为属性的示例:
connProperties.put("CSM","classname=com.gbasedbt.jdbc.Crypto,cipher[all],
mac[]");
选项参数
通过创建带有加密参数的文件,然后指定该文件名称,可配置加密。加密参数为:

ENCCSM_CIPHERS:要使用的密码

ENCCSM_MAC:MAC 级别

ENCCSM_MACFILES:MAC 文件位置

ENCCSM_SWITCH:CIPHER 和 KEY 更改频度,以逗号隔开
要了解这些参数的语法,请参阅《GBase 8s 安全指南》。
下列是在配置文件中指定 CSM 参数的示例:
String newUrl = "jdbc:gbasedbt-sqli:
//beacon:8779/test:GBASEDBTSERVER=danon950_beacon_encrypt;
user=rdtest;password=test;
csm=(classname=com.gbasedbt.jdbc.Crypto,config=test.cfg)";
try
{
Class.forName( "com.gbasedbt.jdbc.Driver" );
}catch( Exception e )
{
System.out.println( "ERROR: failed to load
GBase 8s JDBC driver." );
}
try
{
Connection con = DriverManager.getConnection( newUrl );
}
catch( SQLException e )
{
System.out.println( "ERROR: failed to connect." );

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 60 -
e.printStackTrace();
return;
}
在服务器中配置加密 CSM
要能在加密端口上连接至 GBase 8s 数据库服务器,JDBC 客户机必须使用 JDBC 加密
CSM。当使用 JDBC 加密 CSM 时,至未加密的端口上的 GBase 8s 数据库服务器的连接
尝试失败。可能配置 GBase 8s 数据库服务器的一个实例来同时监听加密的端口和未加密
的端口。
要获取关于将 GBase 8s 配置为使用加密 CSM 的详细信息,
请参阅
《GBase 8s 管
理员指南》。