返回首页

gbase数据、南大通用产品文档:GBase8s在声明部分抛出的异常

更新日期:2024年09月11日

对于oracle而言,当前块中的处理程序无法捕获引发的异常,因为声明中引发的异常
会立即传播到封闭块。
咱们的产品,可以在当前块中截获声明部分抛出的异常。例如:
DROP TABLE t2;
CREATE TABLE t2(c1 VARCHAR(200));
DROP PROCEDURE sp1;
CREATE OR REPLACE PROCEDURE sp1(X INT) IS
A EXCEPTION;
begin

GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 130 -

DECLARE -- 子块开始
i int := 10/X; -- 声明区发生异常(除以0)
BEGIN
NULL;

EXCEPTION
WHEN OTHERS THEN
INSERT INTO t2 VALUES('咱们的产品可以在这里截获。');
END; -- 子块结束
EXCEPTION
WHEN OTHERS THEN
INSERT INTO t2 VALUES('oracle在这里截获');
end;

CALL sp1(0);
SELECT * FROM t2;

在 sysxtdtypes 系统目录表中,在数据库中定义的每个 UDT(用户定义的数据类型)
对应一个条目,这些类型包括不透明和单值数据类型以及复杂数据类型(命名 ROW 类
型、未命名 ROW 类型和 COLLECTION 类型)。
sysxtdtypes 表具有以下列。
表 40. SYSXTDTYPES 表列描述

类型
解释
extended_id
SERIAL
扩展数据类型的唯一标识代码
domain
CHAR(1)
UDT 的域的代码
mode
CHAR(1)
对 UDT 进行分类的代码:
B = 基本(不透明)类型
C = 集合类型或未命名 ROW
类型
D = 单值类型
R = 命名 ROW 类型
' '(空白)= 内置类型

owner
VARCHAR(32)
UDT 所有者的名称
name
VARCHAR(128)
UDT 的名称
type
SMALLINT
对 UDT 分类的代码
source
INTEGER
sysxtdtypes 引用(仅适用于
单值类型)
零 (0) 指示从内置数据类型
创建了单值 UDT。

maxlen
INTEGER
可变长度数据类型的最大长度
零指示固定长度 UDT。
length
INTEGER
固定长度数据类型的长度(以
字节计)
零指示可变长度 UDT。
byvalue
CHAR(1)
“T”= UDT 通过值传递
“F”= UDT 不通过值传递

GBase 8s SQL 指南:参考
南大通用数据技术股份有限公司 - 75 -

类型
解释
cannothash
CHAR(1)
“T”= UDT 可通过缺省散列
函数散列
“F”= UDT 不可通过缺省函
数散列
align
SMALLINT
此 UDT 的对齐方式(= 1、
2、4 或 8)
locator
INTEGER
未命名 ROW 类型的定位器键

每个扩展数据类型都用唯一标识符(称为扩展标识符 (extended_id))、数据标识符
(type) 以及长度和数据库类型的描述来作为特征。
对于使用内置数据类型创建的单值类型,type 列代码对应于 SYSCOLUMNS 中列出
的 syscolumns.coltype 列(指示源类型)的值,但要加上一个十六进制值 0x0000800。
文件 $GBASEDBTDIR/incl/esql/sqltypes.h 包含有关 sysxtdtypes.type 和
syscolumns.coltype 代码的信息。
extended_id 列的索引只允许唯一值。locator 列的索引允许重复值,name 和 owner
列的组合索引也一样。type 和 source 列的组合索引也允许重复值。

恢复所有动态地可更新
的配置参数值(SQL 管理 API)
随同 admin() 或 task() 函数,使用 reset config all 参数来将所有动态地可更新的配置参数
的值恢复到 onconfig 文件中的值。
动态地可更新的配置参数是您可以 onmode 或 SQL 管
理 API 命令为会话更改的那些参数。
语法

用法
reset config all 参数将所有动态地可更新的配置参数的值恢复为 onconfig 文件中最后保存
的值,即使在数据库服务器启动之后更改了这些值。
示例
下列命令恢复所有动态地可调整的配置参数的值。
EXECUTE FUNCTION task("reset config all");