CURSOR_ALREADY_OPEN(当程序中的一个游标已经执行了打开操作,如果开发人员试图再一次打开这个已经打开的游标时,将触发该异常。)
NO_DATA_FOUND(当读取一个游标进行赋值操作(SELECTINTO操作)时,如果未返回任何行,将触发该异常。)
TOO_MANY_ROWS( 实际返回的行数超出请求的行)
INVALID_CURSOR(当试图对一个尚未打开的游标执行任何操作,如打开该非法的游标执行赋值操作,或者关闭未打开的游标时,将触发该异常。)
VALUE_ERROR(当在PL/SQL程序中执行赋值操作时,如果右边值的长度大于左边变量的长度,将触发该异常。)
INVALID_NUMBER(数字或值错误,或字符到数值的转换错误。)
ZERO_DIVIDE(当在程序中使用0作为除数进行运算时,将触发该异常。)
用户定义的例外必须在DECLARE段中说明,在Begin段中用RAISE引起,在EXCEPTION段中使用。
声明用户定义例外的例子:
Declare
out_of_range EXCEPTION;
Declare
out_of_range EXCEPTION;
Begin
…
IF vlSal >MAX_SAL THEN RAISE out_of_range;
ENDIF;
…
Exception
When NO_DATA_FOUND THEN …
When CURSOR_ALREADY_OPEN THEN ...
When TOO_MANY_ROWS THEN ...
When out_of_range THEN ...
END;