返回首页

gbase数据、南大通用产品文档:GBase8a异常类

更新日期:2024年09月11日

接口将所有异常处理类全部封装到了GBaseError.py 文件中,所以当引用
这些异常类时需引用GBaseError.py 文件。所有的错误、异常、警告等内容的
函数名称
返回值
返回值类

函数参数
参数含义
close
返回执行成功
或者失败的状

bool





GBase Python 接口开发手册
南大通用数据技术股份有限公司

- 33 -
错误处理全部经由此文件中的类完成。下图为所有异常类继承关系图。

图表 6-1 GBase Python 异常类继承图


Warning

抛出重要的警告如当正在插入时数据截断等。

Error

错误异常的父类,可以使用Error 捕获所有数据库操作异常。

InterfaceError

相关的数据库接口,不是数据库本身的错误引发的异常。

DatabaseError

代表数据库相关的错误。

OperationError

数据库操作错误,比如数据源未找到,事务无法处理,内存分配错误等。

IntegrityError

GBase Python 接口开发手册


- 34 -

南大通用数据技术股份有限公司

数据完整性不一致错误,比如外键检查错误等。

InternalError

数据库内部错误,比如游标无效(游标关闭后继续调用),事务不同步等。

ProgrammingError

编程错误,比如表不存在,SQL 语法错误等。

NotSupportedError

数据库不支持的错误。
比如在不支持事务的数据库上调用rollback操作等。







- 860 -

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

功能描述
定义一个新的聚合函数。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
843
语法格式
CREATE AGGREGATE name ( input_data_type [ , ... ] ) (
SFUNC = sfunc,
STYPE = state_data_type
[ , FINALFUNC = ffunc ]
[ , INITCOND = initial_condition ]
[ , SORTOP = sort_operator ]
)
or the old syntax
CREATE AGGREGATE name (
BASETYPE = base_type,
SFUNC = sfunc,
STYPE = state_data_type
[ , FINALFUNC = ffunc ]
[ , INITCOND = initial_condition ]
[ , SORTOP = sort_operator ]
)
参数说明

name
要创建的聚合函数名(可以有模式修饰) 。

input_data_type
该聚合函数要处理的输入数据类型。要创建一个零参数聚合函数,可以使用*代替输入
数据类型列表。
(count(*)就是这种聚合函数的一个实例。


base_type
在以前的CREATE AGGREGATE 语法中,输入数据类型是通过basetype 参数指定的,
而不是写在聚合的名称之后。需要注意的是这种以前语法仅允许一个输入参数。要创建一
个零参数聚合函数,可以将basetype 指定为“ANY”(而不是*)。

sfunc
将在每一个输入行上调用的状态转换函数的名称。对于有N 个参数的聚合函数,
sfunc
必须有+1 个参数,其中的第一个参数类型为state_data_type,其余的匹配已声明的输入数

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
844
据类型。函数必须返回一个state_data_type 类型的值。这个函数接受当前状态值和当前输
入数据,并返回下个状态值。

state_data_type
聚合的状态值的数据类型。

ffunc
在转换完所有输入行后调用的最终处理函数,它计算聚合的结果。此函数必须接受一
个类型为state_data_type 的参数。聚合的输出数据类型被定义为此函数的返回类型。如
果没有声明ffunc 则使用聚合结果的状态值作为聚合的结果,且输出类型为state_data_type。

initial_condition
状态值的初始设置(值)。它必须是一个state_data_type 类型可以接受的文本常量值。如
果没有声明,状态值初始为NULL 。

sort_operator
用于MIN 或MAX 类型聚合的排序操作符。这个只是一个操作符名(可以有模式修饰)。
这个操作符假设接受和聚合一样的输入数据类型。
示例
gbase=# CREATE AGGREGATE array_accum (anyelement)
(
sfunc = array_append,
stype = anyarray,
initcond = '{}'
);
相关链接
ALTER AGGREGATE、DROP AGGREGATE