oracle异常(预定义异常,自定义异常)


1:编写一段程序,通过输入的员工编码,查询并打印员工的姓名、职位和薪水,并定义异常处理。(预定义异常)
2:获得所有员工的平均工资,如果平均工资大于2000,视为用户定义的异常,提示“员工工资有点高”,否则打印平均工资。(用户定义异常)

3:使用显式游标,(输入一个员工工资数)根据员工工资(sal)参数,查询员工表emp中工资大于等于该参数的员工信息,
显示内容包括员工编码(empno),姓名(ename),工资(sal).用游标无条件循环做(FOR循环来做)。

1.
Declare
  v_empno emp.empno%type;
  v_ename emp.ename%TYPE;
  v_job emp.job%type;
  v_sal emp.sal%TYPE;
begin
  select ename,job,sal into v_ename, v_job, v_sal from emp where empno='7788'
exception
  when NO_DATA_FOUND
    dbms_output.put_line('编码不存在');
  when TOO_MANY_ROWS then
    abms_output.put_line('查找的记录过多');
  when others then
    abms_output.put_line('其他异常');
end

2.
Declare
  v_sal emp.sal%type;
  sal_Exception exception;
begin
  select avg(sal) into v_sal from emp;
  if v_age>2000 then
Raise sal_exception
  else
    dbms_output.put_line(v_sal);
  end if; 
exception
  when sal_Exception then
    Raise_application_error(-20005,'员工工资有点高'); 
end;

3.
Declare
  Cursor cursor_emp is
  Select ename,empno,sal from emp where sal=>&v_sal;

  v_sal emp.sal%TYPE;
  v_ename emp.ename%TYPE;
  v_empno emp.empno%type;
begin
  open cursor_emp;
  loop
    fetch cursor_emp v_sal;
    exit when cursor_emp%notfound
    dbma_ouput.put_line(||编号为:||v_empno||的||v_ename||的工资是:||v_sal);
  end loop;
  close cursor_emp;
end;

转载于:https://www.cnblogs.com/574482765/archive/2010/11/18/1880503.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值