首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

PL/SQL 自定义错误(五)

2013-07-01 
PL/SQL自定义异常(五)oracle 有时候 写过程会用到异常,我用得不多,这里简单介绍一下;?set serveroutput on

PL/SQL 自定义异常(五)

oracle 有时候 写过程会用到异常,我用得不多,这里简单介绍一下;

?

set serveroutput on;DECLARE  -- 声明一个异常  my_exception exception;  -- 定义异常名,错误码:-20000 .. -20999  pragma exception_init (my_exception, -20020);BEGIN    -- 直接抛出异常,关键字raise + exception_name    raise my_exception;end;

?

-- 这个异常直接抛出,但是没有说明,不方便查看,也可以这样:DECLARE  v_name varchar2(100);  -- 声明一个异常  my_exception exception;  -- 初始化这个异常,错误码:-20000 .. -20999  pragma exception_init (my_exception, -20020);BEGIN    -- 有很多系统自定义的异常:比如no_data_found,可以尝试    raise my_exception;    exception    when my_exception then      dbms_output.put_line('这是测试的异常');      when others then      dbms_output.put_line('异常!');  end;

?

?

-- 当然我一般使用上抛的服务端的异常,不用声明DECLARE  v_num number;BEGIN    select count(*) into v_num from test_table  where user_id =1;    if v_num >0 then      -- raise_application_error 这是一个遗产过程,参数分别是:sqlcode,errmsg,[true,false]      -- sqlcode 错误码-20000到-200999,msg 错误信息,不能超过2K      -- 最后参数默认false, 用以判断是否保存在堆栈。      raise_application_error(-20005, '测试异常!');    end if;end;

?

?

提示:1.这里只是简单说明了下,异常我用得不多,一般系统定义的就够了。可以定义一些参数,用于存放异常信息,并返回,在客户端进行反映

? ? ?2.两种异常其实是一个,系统定义了很多异常,可参考:http://cache.baiducontent.com/c?m=9d78d513d99e01fc09b3c3690d67c0171243f46

? ?82ba6d1020bd18449e3732d41501192ac57230777d2d27c1616af384beb802103461457c18cb8f95dabba85295f9f5134676bf75662d20edcca5124b137e658fede1ef0cb8425e0aec6949f0a5c9015433897f1f8471d449432a5033194f7d81e494810cdb16723e2072d629f204bbd5aaaa0743556dfa1c00a1b85798b3f508aaa34b33b16bf19&p=8d769a47838811a058ee973f53568d&newp=93628b0e85cc43ff57ed977d5b548c231610db2151d1d712&user=baidu&fm=sc&query=oracle+%C9%F9%C3%F7%D2%EC%B3%A3+%2C%CC%ED%BC%D3%D2%EC%B3%A3%D0%C5%CF%A2&qid=&p1=1

热点排行