异常只能在存储过程、PL/SQL块的声明部分声明。通过引入异常的名称和关键字
exception来声明异常。
在存储过程的声明部分声明异常:
CREATE TABLE t2(c1 VARCHAR(200));
CREATE OR REPLACE PROCEDURE sp1(age INT) IS
illegal_age EXCEPTION; -- 声明异常
BEGIN
IF age < 0 THEN
RAISE illegal_age; -- raise an exception that you defined
END IF;
EXCEPTION
WHEN illegal_age THEN
INSERT INTO t2 VALUES('out_of_stock'); -- 插入调试信息
END;
在块的声明部分声明异常:
CREATE TABLE t2(c1 VARCHAR(200));
CREATE OR REPLACE PROCEDURE sp1 IS
BEGIN
DECLARE --sub-block begins
GBase 8s PL/SQL手册
南大通用数据技术股份有限公司
- 122 -
subblock_exception EXCEPTION; -- 在块的声明区声明异常
BEGIN
RAISE subblock_exception;
EXCEPTION
WHEN subblock_exception THEN
INSERT INTO t2 VALUES('catch subblock_exception');
END;
end;
异常和变量声明类似。但请记住,异常是错误条件,而不是数据项。与变量不同的
是,异常不能出现在赋值语句或SQL语句中。和变量相同的是,作用域规则。