返回首页

gbase数据、南大通用产品文档:GBase8c排序查询结果

更新日期:2024年09月11日


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

decadd() 函数将两个 decimal 类型值相加。

语法
mint decadd(n1, n2, sum)
dec_t *n1;
dec_t *n2;
dec_t *sum;
n1
指向第一个运算对象的 decimal 结构的指针。

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

n2
指向第二个运算对象的 decimal 结构的指针。
sum
指向包含总和(n1 + n2)的 decimal 结构的指针。

用法
sum 可与 n1 或 n2 相同。

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

示例

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

The following program obtains the sum of two DECIMAL numbers.
*/
#include

EXEC SQL include decimal;
/* leading spaces will be ignored */
char string1[] = " 1000.6789";
char string2[] = "80";
char result[41];


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

main()
{
mint x;
dec_t num1, num2, sum;

printf("DECADD 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 = decadd(&num1, &num2, ∑))
{
printf("Error %d in adding DECIMALs\n", x);
exit(1);
}
if (x = dectoasc(∑, result, sizeof(result), -1))
{
printf("Error %d in converting DECIMAL result to string\n", x);
exit(1);
}
result[40] = '\0';
/* display result */
printf("\t%s + %s = %s\n", string1, string2, result);
printf("\nDECADD Sample Program over.\n\n");
exit(0);
}

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

输出
DECADD Sample ESQL Program running.

1000.6789 + 80 = 1080.6789

DECADD Sample Program over.

使用 CREATE ACCESS_METHOD 语句在 sysams 系统目录表中注册新的主或辅
助存取方法。
该语句是 SQL ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
access
method
此处为新的存取方
法声明的名称
在 sysams 系统目录表的存取方
法名称中必须是唯一的
标识符

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 205
用法
CREATE ACCESS_METHOD 语句将用户定义的存取方法添加到数据库。要创建
存取方法,必须指定目的函数(或目的方法)、目的标志或目的值作为存取方法
的属性,并将关键字(基于 sysams 系统目录表中列名)与 UDR 相关联。您必
须具有 DBA 或 Resource 权限才能创建存取方法。
有关设置目标选项的信息,包含所有函数关键字的列表,请参阅用途选项。
PRIMARY 关键字为虚拟表指定用户定义的主存取方法。SECONDARY 关键字为
虚拟索引指定创建用户定义的辅助存取方法。SECONDARY 关键字(和创建虚拟
索引)在 Java™ Virtual-Table Interface 中不受支持。
以下语句创建了名为 T_tree 的辅助存取方法:
CREATE SECONDARY ACCESS_METHOD T_tree
(
am_getnext = ttree_getnext,

. . .
am_unique,
am_cluster,
am_sptype = 'S'
);
在前面的示例中,在目标选项列表中的 am_getnext 关键字与 ttree_getnext( )
UDR 关联作为满足查询而扫描下一项的方法的名称。该示例指示了 T_tree 辅助
存取方法支持唯一键和集群,并驻留在 sbspace 中。
任何目标函数任务中与 CREATE ACCESS_METHOD 语句相关联的 UDR(例
如,之前示例中 ttree_getnext( ) 和 am_getnext 的关联),必须已经由
CREATE FUNCTION 语句(或者具有等同功能的语句,例如:CREATE
PROCEDURE FROM))在数据库中注册过。
以下语句创建驻留在外部空间的名为 am_tabprops 的主存取方法。
CREATE PRIMARY ACCESS_METHOD am_tabprops
(
am_open = FS_open,
am_close = FS_close,
am_beginscan = FS_beginScan,

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 206
am_create = FS_create,
am_scancost = FS_scanCost,
am_endscan = FS_endScan,
am_getnext = FS_getNext,
am_getbyid = FS_getById,
am_drop = FS_drop,
am_truncate = FS_truncate,
am_rowids,
am_sptype = 'x'
);
如果包含可选的 IF NOT EXISTS 关键字,且该指定名称的存取方法已将存在于
当前数据库中,则数据库服务器不采取操作(而不是向此应用程序发送异常)。