博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle 11g PL/SQL 用户自定义 Exception
阅读量:2497 次
发布时间:2019-05-11

本文共 1580 字,大约阅读时间需要 5 分钟。

方法一
声明 exception
--创建存储过程
SQL> create procedure account_status (
  2  due_date date,
  3  today date
  4  ) authid definer
  5  is
  6  
past_due exception;
 
-- 定义异常
  7  begin
  8  if due_date < today then
  9  
raise past_due;
 
-- 声明异常
 10  end if;
 11  exception
 12  
when past_due then
-- 异常处理
 13  dbms_output.put_line('Account past due.');
 14  end;
 15  /
过程已创建。
调用存储过程,来触发异常
SQL> set serveroutput on
SQL> l
  1  begin
  2  account_status(sysdate-1,sysdate);
  3* end;
SQL> /
Account past due.
PL/SQL 过程已成功完成。
SQL> begin
  2  account_status(sysdate-1,sysdate+1);
  3  end;
  4  /
Account past due.
PL/SQL 过程已成功完成。
SQL> begin
  2  account_status(sysdate-1,sysdate-2);
  3  end;
  4  /
PL/SQL 过程已成功完成。
方法二
使用 
raise_application_error 包
SQL> create or replace procedure account_status (
  2  due_date date,
  3  today date
  4  ) authid definer
  5  is
  6  begin
  7  if due_date < today then  -- explicitly raise exception
  8  
raise_application_error(-20000, 'Account past due.');
  9  end if;
 10  end;
 11  /
过程已创建。
SQL> begin
  2  account_status(sysdate-1,sysdate);
  3  end;
  4  /
begin
*
第 1 行出现错误:
ORA-20000: Account past due.
ORA-06512: 在 "SCOTT.ACCOUNT_STATUS", line 8
ORA-06512: 在 line 2
SQL> declare
  2  past_due exception;  --declare exception
  3  pragma exception_init (past_due, -20000); --assign error code to exception
  4  begin
  5  account_status(sysdate-1,sysdate);  --invoke procedure
  6  exception
  7  when past_due then
  8  dbms_output.put_line(to_char(sqlerrm(-20000)));
  9  end;
 10  /
ORA-20000: Account past due.
PL/SQL 过程已成功完成。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26506993/viewspace-1985904/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26506993/viewspace-1985904/

你可能感兴趣的文章
TortoiseGit 使用教程
查看>>
SQL表连接查询(inner join、full join、left join、right join)
查看>>
DB2中循环日期跑数据
查看>>
工作笔记还是蛮有用
查看>>
servlet3.0 的新特性之二注解代替了web.xml配置文件
查看>>
python 内置方法
查看>>
python 编码格式
查看>>
python 算法中的--冒泡排序
查看>>
代码阅读
查看>>
【原创】在 Mac OS X 上打造舒服的开发环境(三)——利用 Parallel Desktop 安装 CentOS 7...
查看>>
How Flask Routing Works
查看>>
Python新式类和经典类的区别
查看>>
整数快速乘法/快速幂+矩阵快速幂+Strassen算法 (转)
查看>>
匿名内部类
查看>>
C#字符串处理--学习笔记
查看>>
ios 保存数据NSKeyedArchiver,NSUserDefaults,Write,SQLite
查看>>
设计模式之代理模式
查看>>
html5中audio支持音频格式
查看>>
1.3.1 Mixing Milk
查看>>
"Unable to locate package lrzsz"的解决办法
查看>>