返回首页

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

更新日期:2024年09月11日

deccmp() 函数比较两个 decimal 类型数值。
语法
mint deccmp(n1, n2)
dec_t *n1;
dec_t *n2;
n1
指向要比较的第一个数值的 decimal 结构的指针。
n2
指向要比较的第二个数值的 decimal 结构的指针。

返回代码
-1
第一个值小于第二个值。
0
两个值相同。
1
第一个值大于第二个值。
DECUNKNOWN
有一个值为空。

示例
demo 目录中的文件 deccmp.ec 包含下列样例程序。
/*
* deccmp.ec *
The following program compares DECIMAL numbers and displays the results.

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

#include

EXEC SQL include decimal;
/* leading spaces will be ignored */
char string1[] = "-12345.6789";
char string2[] = "12345.6789";
char string3[] = "-12345.6789";
char string4[] = "-12345.6780";

main()
{
mint x;
dec_t num1, num2, num3, num4;

printf("DECCOPY 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 = deccvasc(string3, strlen(string3), &num3))
{
printf("Error %d in converting string3 to DECIMAL\n", x);
exit(1);
}

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 624 -
if (x = deccvasc(string4, strlen(string4), &num4))
{
printf("Error %d in converting string4 to DECIMAL\n", x);
exit(1);
}

printf("Number 1 = %s\tNumber 2 = %s\n", string1, string2);
printf("Number 3 = %s\tNumber 4 = %s\n",string3, string4);
printf("\nExecuting: deccmp(&num1, &num2)\n");
printf(" Result = %d\n", deccmp(&num1, &num2));
printf("Executing: deccmp(&num2, &num3)\n");
printf(" Result = %d\n", deccmp(&num2, &num3));
printf("Executing: deccmp(&num1, &num3)\n");
printf(" Result = %d\n", deccmp(&num1, &num3));
printf("Executing: deccmp(&num3, &num4)\n");
printf(" Result = %d\n", deccmp(&num3, &num4));

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

DECCMP Sample ESQL Program running.

Number 1 = -12345.6789 Number 2 = 12345.6789
Number 3 = -12345.6789 Number 4 = -12345.6780

Executing: deccmp(&num1, &num2)
Result = -1
Executing: deccmp(&num2, &num3)
Result = 1
Executing: deccmp(&num1, &num3)
Result = 0

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 625 -
Executing: deccmp(&num3, &num4)
Result = -1

DECCMP Sample Program over.

函数说明
返回移除字符串str 最右边多余空格后的字符串。
示例
示例1:移除“barbar
”最右边的多余空格。
gbase> SELECT RTRIM('barbar
') FROM dual;
+--------------------+
| RTRIM('barbar
') |
+--------------------+
| barbar
|
+--------------------+

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
704
1 row in set

使用 CREATE XADATASOURCE TYPE 语句创建新的符合 XA 的数据源类型,
并在 sysxasourcetypes 系统目录表中为其创建一个条目。该语句是 SQL
ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
xa_type 在此处声明新的
XA 数据源类型的
名称
在 sysxasourcetypes 系统目录
表中的 XA 数据源类型名称中必
须是唯一的
标识符
用法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 511
CREATE XADATASOURCE TYPE 语句向数据库中添加一个符合 XA 的数据源
类型。
高可用集群的辅助服务器上不支持 CREATE XADATASOURCE TYPE 语句。
任何用户都可以根据数据库是否符合 ANSI 的状态创建遵循所有者命名规则标准
的 XA 数据源类型。只有使用事务日志记录的数据库才支持 X/Open DTP XA 标
准。
要创建数据源类型,您必须声明它的名称并指定 purpose functions 和 purpose
values 作为 XA 源类型的属性。源类型名称后面的大多数的选项将
sysxasourcetypes 系统目录表中的列与 UDR 相关联。
如果您包含了可选的 IF NOT EXISTS 关键字,则如果它指定名称的 XA 数据源
类型名称已在当前数据库中注册,则数据库服务器不会执行任何操作(而不是向
应用程序发送异常)。
XA 数据源类型和 XA 数据源实例都会指定到一个数据库。要支持分布式事务,
必须在多个与外部 XA 数据源交互的数据库中创建它们。
以下语句创建新的 XA 数据源类型,名为 MQSeries
® ,被用户 gbasedbt 所有。
CREATE XADATASOURCE TYPE 'gbasedbt'.MQSeries(
xa_flags = 1,
xa_version = 0,
xa_open = gbasedbt.mqseries_open,
xa_close = gbasedbt.mqseries_close,
xa_start = gbasedbt.mqseries_start,
xa_end = gbasedbt.mqseries_end,
xa_rollback = gbasedbt.mqseries_rollback,
xa_prepare = gbasedbt.mqseries_prepare,
xa_commit = gbasedbt.mqseries_commit,
xa_recover = gbasedbt.mqseries_recover,
xa_forget = gbasedbt.mqseries_forget,
xa_complete = gbasedbt.mqseries_complete);
您需要为上述列出的选项提供一个值或 UDR 名称,但是您列出它们的顺序并不
重要。(在此示例中目标选项的顺序与 sysxasourcetypes 系统目录表中列名称的
顺序相对应。)

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 512
此语句成功执行后,您创建了 gbasedbt.MQSeries 类型的实例。以下语句创建了
新的实例 gbasedbt.MenloPark ,它符合 XA 数据源类型 gbasedbt.MQSeries :
CREATE XADATASOURCE gbasedbt.MenloPark USING gbasedbt.MQSeries;