返回首页

gbase数据、南大通用产品文档:GBase8s248 SYSSECLABELNAMES

更新日期:2024年09月11日

sysseclabelnames 系统目录表记录安全标号名称。它具有以下列。

类型
解释
secpolicyid
INTEGER
安全标号所属的安全策略的标识
seclabelname
VARCHAR(128)
安全标号名称
seclabelid
INTEGER
安全标号的标识

ifx_int8div() 函数将两个 int8 类型值相除。
语法

mint ifx_int8div(n1, n2, quotient)
ifx_int8_t *n1;
ifx_int8_t *n2;
ifx_int8_t *quotient;
n1
指向包含被除数的 int8 结构的指针。
n2

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 739 -
指向包含除数的 int8 结构的指针。
quotient
指向包含 n1/n2 的商的 int8 结构的指针。

用法
quotient 可与 n1 或 n2 相同。

返回代码
0
运算成功。
-1202
运算尝试除以零。

示例
demo 目录中的文件 int8div.ec 包含下列样例程序。
/*
* ifx_int8div.ec *
The following program divides two INT8 numbers and displays the result.
*/

#include

EXEC SQL include "int8.h";

char string1[] = "480,999,777,666,345,567";
char string2[] = "80,765,456,765,456,654";
char result[41];

main()
{
mint x;
ifx_int8_t num1, num2, dvd;

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

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

if (x = ifx_int8cvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to INT8\n", x);
exit(1);
}
if (x = ifx_int8cvasc(string2, strlen(string2), &num2))
{
printf("Error %d in converting string2 to INT8\n", x);
exit(1);
}
if (x = ifx_int8div(&num1, &num2, &dvd))
{
printf("Error %d in dividing num1 by num2\n", x);
exit(1);
}
if (x = ifx_int8soasc(&dvd, result, sizeof(result)))
{
printf("Error %d in converting dividend to string\n", x);
exit(1);
}
result[40] = '\0';
printf("\t%s / %s = %s\n", string1, string2, result);

printf("\nIFX_INT8DIV Sample Program over.\n\n");
exit(0);
}
输出
IFX_INT8DIV Sample ESQL Program running.

480,999,777,666,345,567 / 80,765,456,765,456,654 = 5

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 741 -
IFX_INT8DIV Sample Program over.

功能描述
定义一个新的重写规则。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
940
注意事项
为了在表上定义或修改规则,你必须是该表的拥有者。
如果在同一个表定义了多个相同类型的规则,则按规则的名称字母顺序触发它们。
在视图上用于INSERT、UPDATE、DELETE 的规则中可以添加RETURNING 子句基于
视图的字段返回。如果规则被INSERT RETURNING、UPDATE RETURNING、DELETE
RETURNING 命令触发,这些子句将用来计算输出结果。如果规则被不带RETURNING 的
命令触发,
那么规则的RETURNING 子句将被忽略。
目前仅允许无条件的INSTEAD 规则包
含RETURNING 子句,而且在同一个事件内的所有规则中最多只能有一个RETURNING 子
句。这样就确保只有一个RETURNING 子句可以用于计算结果。如果在任何有效规则中都
不存在RETURNING 子句,该视图上的RETURNING 查询将被拒绝。
不建议在rule 内使用列存表,
尤其是一些写操作。
因为列存表与行存表的架构实现、

务处理等存在很大差异,因此rule 的表现也会有很多与行存表不同的地方。
语法格式
CREATE [ OR REPLACE ] RULE name AS ON event
TO table_name [ WHERE condition ]
DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }
其中event 包含SELECT、INSER、DELETE、UPDATE
参数说明

name
创建的规则名。它必须在同一个表上的所有规则名字中唯一。
取值范围:符合标识符命名规范的字符串,且最大长度不超过63 个字符。

table_name
规则作用的表或者视图的名字(可以有模式修饰)


condition
返回boolean 的SQL 条件表达式,决定是否实际执行规则。表达式除了引用NEW 和

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
941
OLD 之外不能引用任何表,并且不能有聚合函数。

INSTEAD
INSTEAD 指示使用该命令替换初始事件。

ALSO
ALSO 指示该命令应该在初始事件执行之后执行。如果既没有声明ALSO 也没有声明
INSTEAD,那么ALSO 为缺省值。

command
组成规则动作的命令。有效的命令是SELECT、INSERT、UPDATE、DELETE 语句
之一。
示例
CREATE RULE "_RETURN" AS
ON SELECT TO t1
DO INSTEAD
SELECT * FROM t2;