星空网 > 软件开发 > 数据库

oracle异常

使用oracle系统游标处理数据

 

oracle异常

实例代码:

--set serveroutput on;
create or replace procedure split_page_procedure(page_index in number,
page_size in number,
key_word in varchar2) is

  my_curser SYS_REFCURSOR;
--分页参数
page_count number(7);
min_index number(7); --起始位置
max_index number(7); --结束位置
--打印参数
name_param userlogin.user_name%type;
uid_param userlogin.user_id%type;

begin
if (page_index < 1) or (page_size < 1) then
  RAISE NO_DATA_FOUND;
end if;
--参数校验
--设置分页参数 分页参数值最少为1,
min_index := (page_index - 1) * page_size - 1;
max_index := page_index * page_size;
--利用分页查询数据;
open my_curser for
select i.user_name, i.user_id name
from (select u.*, rownum rn from userlogin u where rownum < max_index) i
where i.rn > min_index;
loop
FETCH my_curser
INTO name_param, uid_param;
--游标取不到数据则退出
exit when my_curser%NOTFOUND;
dbms_output.put_line('参数:name:' || name_param || ' uid:' || uid_param);
end loop;
close my_curser;
--査取总记录
select count(1) into page_count from userlogin;
dbms_output.put_line('返回的总记录条数:' || page_count);

--异常处理
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    DBMS_OUTPUT.PUT_LINE('分页参数不合理 page_index:' || page_index ||
      ' page_size:' || page_size);
  WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SQLCODE || '---' || SQLERRM);
end split_page_procedure;

 

方法一, 直接抛

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SQL> DECLARE
  2    -- 测试异常.
  3    e_test_exception EXCEPTION;
  4  BEGIN
  5
  6    -- 直接抛出异常,测试下面的捕获
  7    RAISE e_test_exception;
  8
  9    EXCEPTION
 10      WHEN e_test_exception THEN
 11        dbms_output.put_line('Test Error !');
 12      WHEN OTHERS THEN
 13        dbms_output.put_line('OTHERS Error!');
 14  END;
 15  /
Test Error !
 
PL/SQL procedure successfully completed.

 

方法二, 定义个错误代码与消息后, 再抛。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL> BEGIN
  2    -- 错误代码允许的范围是 -20,000~20,999
  3    RAISE_APPLICATION_ERROR(-20000, 'My Error Happen!');
  4
  5    EXCEPTION
  6      WHEN OTHERS THEN
  7        dbms_output.put_line('Error Code = ' || TO_CHAR(SQLCODE) );
  8        dbms_output.put_line('Error Message = ' || SQLERRM );
  9  END;
 10  /
Error Code = -20000
Error Message = ORA-20000: My Error Happen!
 
PL/SQL procedure successfully completed.




原标题:oracle异常

关键词:oracle

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

Amzboom:https://www.ikjzd.com/w/1573152812331081730
Amzbox:https://www.ikjzd.com/w/1573152814633754626
Bullshark ERP:https://www.ikjzd.com/w/1573152815271632897
AMZCB:https://www.ikjzd.com/w/1573152817033240578
AMZFire:https://www.ikjzd.com/w/1573152838885564418
飞鱼数据参谋:https://www.ikjzd.com/w/1573152842253246466
大同旅游攻略一日游 山西大同一日游旅游景点有哪些:https://www.vstour.cn/a/408251.html
如何从帽儿山到哈尔滨火车站(详细交通路线及注意事项):https://www.vstour.cn/a/408252.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流