• 游标作业1



    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;

  • 相关阅读:
    准备重启blog。。。
    愿我成功省一。
    [LUOGU]P5502 [JSOI2015]最大公约数
    [LUOGU]P3400 仓鼠窝
    [LUOGU]P5149 会议座位
    OI退役记
    新开博客园~~
    1108 模拟赛
    牛客1102
    题解 CF21B 【Intersection】
  • 原文地址:https://www.cnblogs.com/humiao/p/1880605.html
Copyright © 2020-2023  润新知