返回首页

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

更新日期:2024年09月11日

decsub() 函数将两个 decimal 类型值相减。
语法
mint decsub(n1, n2, difference)
dec_t *n1;
dec_t *n2;
dec_t *difference;
n1
指向第一个运算对象的 decimal 结构的指针。
n2
指向第二个运算对象的 decimal 结构的指针。

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

difference
指向包含 n1 减去 n2 的差的 decimal 结构的指针。

用法
difference 可与 n1 或 n2 相同。

返回代码
0
操作成功。
-1200
操作导致溢出。
-1201
操作导致下溢。

示例

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

The following program subtracts two DECIMAL numbers and displays the result.
*/

#include

EXEC SQL include decimal;

char string1[] = "1000.038782";
char string2[] = "480";
char result[41];

main()

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

{
mint x;
dec_t num1, num2, diff;

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

if (x = deccvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to DECIMAL\n", x);
exit(1);
}
if (x = deccvasc(string2, strlen(string2), &num2))
{
printf("Error %d in converting string2 to DECIMAL\n", x);
exit(1);
}
if (x = decsub(&num1, &num2, &diff))
{
printf("Error %d in subtracting decimals\n", x);
exit(1);
}
if (x = dectoasc(&diff, result, sizeof(result), -1))
{
printf("Error %d in converting result to string\n", x);
exit(1);
}
result[40] = '\0';
printf("\t%s - %s = %s\n", string1, string2, result);

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

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

DECSUB Sample ESQL Program running.

1000.038782 - 480 = 520.038782

DECSUB Sample Program over.

GBA-01BR-0089
错误码
错误标识
错误显示信息
GBA-01BR-0089

get table id error
错误出现原因
获取table id 失败
分析与建议
检查目前数据库是否正常

功能描述
ALTER INDEX 用于修改现有索引的定义。
它有几种子形式:

IF EXISTS
如果指定的索引不存在,则发出一个notice 而不是error。

RENAME TO
只改变索引的名称。对存储的数据没有影响。

SET TABLESPACE
这个选项会改变索引的表空间为指定表空间,
并且把索引相关的数据文件移动到新的表空间
里。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
710

SET ( { STORAGE_PARAMETER = value } [, …] )
改变索引的一个或多个索引方法特定的存储参数。需要注意的是索引内容不会被这个命令
立即修改,根据参数的不同,可能需要使用REINDEX 重建索引来获得期望的效果。

RESET ( { storage_parameter } [, …] )
重置索引的一个或多个索引方法特定的存储参数为缺省值。与SET 一样,可能需要使用
REINDEX 来完全更新索引。

[ MODIFY PARTITION index_partition_name ] UNUSABLE
用于设置表或者索引分区上的索引不可用。

REBUILD [ PARTITION index_partition_name ]
用于重建表或者索引分区上的索引。

RENAME PARTITION
用于重命名索引分区。

MOVE PARTITION
用于修改索引分区的所属表空间。
注意事项
只有索引的所有者或者拥有索引所在表的INDEX 权限的用户有权限执行此命令,
系统管理员
默认拥有此权限。
语法格式
重命名表索引的名称。
ALTER INDEX [ IF EXISTS ] index_name
RENAME TO new_name;
修改表索引的所属空间。
ALTER INDEX [ IF EXISTS ] index_name
SET TABLESPACE tablespace_name;
修改表索引的存储参数。
ALTER INDEX [ IF EXISTS ] index_name

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
711
SET ( {storage_parameter = value} [, ... ] );
重置表索引的存储参数。
ALTER INDEX [ IF EXISTS ] index_name
RESET ( storage_parameter [, ... ] ) ;
设置表索引或索引分区不可用。
ALTER INDEX [ IF EXISTS ] index_name
[ MODIFY PARTITION index_partition_name ] UNUSABLE;
说明:列存表不支持该语法。
重建表索引或索引分区。
ALTER INDEX index_name
REBUILD [ PARTITION index_partition_name ];
重命名索引分区。
ALTER INDEX [ IF EXISTS ] index_name
RENAME PARTITION index_partition_name TO new_index_partition_name;
修改索引分区的所属表空间。
ALTER INDEX [ IF EXISTS ] index_name
MOVE PARTITION index_partition_name TABLESPACE new_tablespace;
参数说明

index_name
要修改的索引名。

new_name
新的索引名。
取值范围:字符串,且符合标识符命名规范。

tablespace_name
表空间的名称。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
712
取值范围:已存在的表空间。

storage_parameter
索引方法特定的参数名。

value
索引方法特定的存储参数的新值。根据参数的不同,这可能是一个数字或单词。

new_index_partition_name
新索引分区名。

index_partition_name
索引分区名。

new_tablespace
新表空间。
示例
请参见CREATE INDEX 的示例。
相关命令
CREATE INDEX,DROP INDEX,REINDEX