WEB开发网
开发学院数据库Oracle 从零开始学Oracle—PL/SQL(七) 阅读

从零开始学Oracle—PL/SQL(七)

 2009-04-09 13:13:35 来源:WEB开发网   
核心提示: 例子:题:编写程序 向DEPT表中插入一条记录, 从键盘输入数据,从零开始学Oracle—PL/SQL(七)(3),如果 数据类型输入错误要有提示 无法插入记录 也要有提示 只能输入正数,如果有负数提示 declare n number; no dept.deptno%type; nm

例子:

题:编写程序 向DEPT表中插入一条记录,
    从键盘输入数据,如果
    数据类型输入错误要有提示
    无法插入记录 也要有提示
    只能输入正数,如果有负数提示
   declare
    n number;
    no dept.deptno%type;
    nm dept.dname%type;
    lc dept.loc%type;
    exp exception;   --用户定义的变量
    exp1 exception;   --用户定义的变量
    num number:=0;   --计数器
     pragma exception_init(exp,-1); --预定义语句
    --捆绑Oracle内置异常(-1错误和异常变量关联),-1 主键冲突
    pragma exception_init(exp1,-1476);除零异常
    e1 exception; --用户定义的变量
   begin
    --输入值
      no := '&编号';
     num := num + 1;
     if no < 0 then
        raise e1;    --自定义异常的引发
      end if;

     nm := '&名称';
     num := num +1;

     lc := '&地址'; 
     num := num +1;

     n := 10 /0;    

     insert into dept values (no,nm,lc);
     num := num +1;
     commit;

   exception
     --自定义异常
     when e1 then
        dbms_output.put_line('编号不能为负数');
     --数据类型不对
     when value_error then
        if num =0 then 
         dbms_output.put_line('编号数据类型不对');
        elsif num = 1 then
         dbms_output.put_line('名称数据类型不对');
        elsif num =2 then
         dbms_output.put_line('地址数据类型不对');
        end if;
        rollback;
     --主键冲突
     when exp then
         --sqlcode全局变量 异常错误号
         --sqlerrm全局变量 异常的文字信息 
         --dbms_output.put_line('异常的编号:'||sqlcode);
         --dbms_output.put_line('异常的内容:'||sqlerrm);
         --dbms_output.put_line('编号已存在') ;
         rollback;
     --非预定义异常(关联错误号)
     when exp1 then
        dbms_output.put_line('0做了除数') ;
         raise_application_error(-20001,'0做了除数');
         --引起一个自定义的错误
           --预先保留-20001 到 -29999编号
         rollback;
     --其他的异常
     when others then
         dbms_output.put_line('异常的编号:'||sqlcode);
         dbms_output.put_line('异常的内容:'||sqlerrm);
        -- dbms_output.put_line('出现错误');
         rollback;
   end; 

系列文章:

从零开始学Oracle—环境配置(一)

从零开始学Oracle—基本语法解析(二)

从零开始学Oracle-—约束(三)

从零开始学Oracle—内建函数(四)

从零开始学Oracle—内建对象(五)

从零开始学Oracle—性能对象(六)

从零开始学Oracle—异常处理(八)

上一页  1 2 3 

Tags:开始 Oracle PL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接