第三讲plsql编程基础内容摘要:

. . .] 预定义异常 Oracle自动引发的预定义异常大约 24种:  NO_DATA_FOUND  TOO_MANY_ROWS  INVALID_CURSOR  ZERO_DIVIDE  DUP_VAL_ON_INDEX  CURSOR_ALREADY_OPEN 预定义异常处理 : 实例 PROCEDURE elim_inventory (v_product_id IN %TYPE) IS v_id %TYPE。 BEGIN SELECT id INTO v_id FROM s_product WHERE id = v_product_id。 DELETE FROM s_inventory WHERE product_id = v_product_id。 COMMIT。 ... ... EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK。 (TO_CHAR(v_product_id)||is invalid.’)。 WHEN TOO_MANY_ROWS THEN ROLLBACK。 (‘data corruption in S_PRODUCT.’)。 WHEN OTHERS THEN ROLLBACK。 (‘Other error occurred.’)。 END elim_inventory。 Oracle server 未定义的异常  标准的 Oracle错误  用户在定义部分定义, Oracle自动引发 处理 Oracle Server 未定义的异常 Declare Associate Reference 定义部分 异常处理部分 命名异常 异常对应代码 pragma EXCEPTION_INIT 处理被引发的异常 未定义异常 : 实例 捕获 Oracle Server 2292 号错误,为其设定错误提示信息为“非法的一致性错误” DECLARE e_products_remaining EXCEPTION。 PRAGMA EXCEPTION_INIT ( e_products_remaining, 2292)。 . . . BEGIN . . . EXCEPTION WHEN e_products_remaining THEN (39。 Referential integrity constraint violated.39。 )。 . . . END。 1 2 3 用户定义的异常  程序执行中出现的编程人员认为的非正常情况  在程序中显式定义并引发 处理用户定义的异常 Declare Raise Reference 定义部分 异常处理部分 命名异常 使用 RAISE语句引发异常 处理被引发的异常 执行部分 用户定义的异常处理:实例 DECLARE e_amount_remaining EXCEPTION。 . . . BEGIN . . . RAISE e_amount_remaining。 . . . EXCEPTION WHEN e_amount_remaining THEN (39。 There is still an amount in stock.39。 )。 . . . END。 1 2 3 SQLCODE和 SQLERRM  Oracle内置函数  描述错误代码和信息  在 OTHERS异常处理器中特别有用,可以告知用户何种内部错误被引发 SQLCODE SQLERRM 用户定义的异常 +1 UserDefined Exception Oracle定义错误 错误代码 同错误代码相连的信息 没有异常发生 0 ora0000: normal,successful pletion 异常处理的函数 : 实例 转存未处理的异常的错误代码及提示信息 . . . v_error_code NUMBER。 v_error_message VARCHAR2(255)。 BEGIN . . . EXCEPTION . . . WHEN OTHERS THEN ROLLBACK。 v_error_code := SQLCODE。 v_error_message := SQLERRM。 (TO_CHAR(v_error_code)|| 39。 : 39。 || v_error_message)。 END。 实例 DECLARE salary %TYPE:=0。 last_name。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。