返回首页

gbase数据、南大通用产品文档:GBase8s处理抛出的异常

更新日期:2024年09月11日

当引发异常时,PL/SQL块或子程序的正常执行将停止,并将控制传输到其异常处理程
序,其格式如下:
EXCEPTION
WHEN exception1 THEN -- 处理异常exception1
处理语句序列1
WHEN exception2 THEN -- 处理另一个异常exception2
处理语句序列2

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

...
WHEN OTHERS THEN -- 处理所有其它异常
处理语句序列3
END;
要捕获引发的异常,请编写异常处理程序。每个处理程序都包含一个WHEN子句,该
子句指定一个异常,然后是引发该异常时要执行的一系列语句。这些语句执行完之后,执
行控制权不返回抛出异常的位置。换言之,您不能在异常中断的地方继续处理。
可选的OTHERS异常处理程序(始终是块或子程序中的最后一个处理程序)充当所有
未明确命名的异常的处理程序。因此,一个块或子程序只能有一个OTHERS处理程序。使
用OTHERS处理程序可以保证不会出现未处理的异常。
如果希望两个或多个异常执行相同的语句序列,请在WHEN子句中列出异常名称,并
用关键字OR分隔它们,如下所示:
EXCEPTION
WHEN over_limit OR under_limit OR VALUE_ERROR THEN
-- 处理这些异常
如果引发列表中的任何异常,则执行相关的语句序列。关键字OTHERS不能出现在异
常名称列表中;它必须自己出现。可以有任意数量的异常处理程序,每个处理程序都可以
将异常列表与一系列语句相关联。但是,异常名称只能在PL/SQL块或子程序的异常处理部
分出现一次。
PL/SQL变量的通常作用域规则适用,因此您可以在异常处理程序中引用本地和全局变
量。但是,当在cursor FOR循环中引发异常时,在调用处理程序之前会隐式关闭游标。因
此,显式游标属性的值在处理程序中不可用。

参数说明:最大保存日志文件个数。
取值范围:整型,[1, 100]。参数修改请参考表GUC 参数设置方式进行设置。
默认值:10


GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 291 -

在 SPL 例程中,
您可使用命名的 ROW 类型和未命名的 ROW 类型作为参数定义、
参数、
变量定义和返回值。要获取关于如何在 SPL 中声明 ROW 变量的信息,请参阅 声明 row
类型变量。
下图定义 row 类型 salary_t 和 emp_info 表,它们是本部分使用的示例。
图: 定义 row 类型 salary_t 和 emp_info 表
CREATE ROW TYPE salary_t(base MONEY(9,2), bonus MONEY(9,2))

CREATE TABLE emp_info (emp_name VARCHAR(30), salary salary_t);
emp_info 表有员工姓名和薪酬信息的列。