Exception 例外處理

本文介绍了在PL/SQL中处理异常的方式,包括FORM、REPORT和TRIGGER的异常处理。详细展示了各种常见异常(如no_data_found, too_many_rows等)的捕获和响应方法,并提供了示例代码。在触发器和报告程序中,还展示了如何利用raise_application_error自定义错误处理及获取SQLCode来记录错误信息。" 117213869,10548266,单片机C语言与汇编混合编程实践,"['单片机开发', 'C语言编程', '嵌入式系统', '汇编语言编程', '混合编程技术']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



-- FORM /REPORT  例外处理   实现方法:
    BEGIN
    《PL/SQL块》;
    Exception
        when no_data_found then    --没有找到数据
            《响应命令》;
        when too_many_rows then    --返回多行,隐式光标每次只能检索一行数据
            《响应命令》;
        when invalid_number then    --字符向数字转换失败
            《响应命令》;
        when zero_divide then        --被零除
            《响应命令》;
        when dup_val_on_index then    --向唯一索引中插入重复数据
            《响应命令》;
        when invalid_cursor then    --非法游标操作
            《响应命令》;
        when value_error then        --数字的,数据转换,截字符串或强制性的错误
            《响应命令》;
        when others then        --发生其它任何错误
                 null;                    --选择一:什么也不做,就当错误没发生
        raise form_trigger_failure;    --选择二:挂起当前程序
    END;



----trigger  例外处理---------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
declare
error_msg VARCHAR2(250);
begin
    《PL/SQL块》;
EXCEPTION
     WHEN OTHERS THEN
       error_msg := 'WSHR_LEAVE_HOLS_HEADERS_T1' || substrb(SQLERRM, 1, 60);
       raise_application_error(-20500, error_msg);
end;


----report 等程式  例外处理---------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------

declare
err_num           VARCHAR2(100);
err_msg           VARCHAR2(500);

begin
    《PL/SQL块》;
exception
    when others then
        err_num := SQLCODE;                    --可直接使用
        err_msg := SUBSTR(sqlerrm, 1, 500);    --可直接使用
        fnd_file.put_line(fnd_file.log, err_num||' '||err_msg);  --可直接使用
        fnd_file.put_line(fnd_file.log,'error1!');  --可直接使用
end;

SQLCode:数据库操作的返回码,其中0 --成功;
                -1 --失败;
                100--没有检索到数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值