【深入了解 Oracle 异常】(oracle所有异常)
Oracle异常是基于数据库的开发工作的重要的一部分,Oracle的程序提供了很多有关异常的处理选项。Oracle可以处理两种异常,一种是通过处理系统里发出的异常,另一种是把异常抛出,由用户代码处理。
对于第一种情况,Oracle可以在把相应的异常放到一个被称为exception或者error_code的变量中,用户能够通过使用 SQL *Plus 来查找到异常,写SQL代码来检查相应的异常,以此决定采取哪种恢复措施。例如:
SQL> Select * From TABLEA Where CODE = 123;
IF(SQL%ROWCOUNT = 0) THEN
IF SQLERRM = ‘ORA-02292’ THEN
RAISE_APPLICATION_ERROR(-20503,’无法删除父记录,请先删除子记录!’);
elsif SQLERRM = ‘ORA-2007’ THEN
RAISE_APPLICATION_ERROR(-20503,’编号未能在表中查出,需要重新登记!’);
END IF;
END IF;
而对于第二种情况,可以使用 pragma exception_init 把可能发生的异常放到一个变量里,然后使用if 语句和raise语句判断异常发生后,采取相应的处理措施。例如:
DECLARE
EX_NO_DATA FOUND;
BEGIN
EXECUTE IMMEDIATE ‘SELECT * FROM TABLEA’ INTO V_NO_DATA;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR(-20502,’表中无数据,请检查!’);
END;
可以看到,Oracle异常的处理有多款方式可以使用,用户可以根据实际的状况,使用不同的处理方式来处理异常。在异常处理之前,用户必须理清想要完成的任务,在遇到异常时应仔细检查原因,然后采取有效措施解决。Oracle异常的处理机制,能够有效地为用户节省大量的时间,使用户可以更有效地处理任务。