zoukankan      html  css  js  c++  java
  • 游标练习

    1,用游标显示所有部门编号与名称,以及其所拥有的员工人数。

    declare
    cursor cur_dept is
    select dname,deptno, count(*) v_count from ( select d.deptno,d.dname from dept d inner join emp e on d.deptno=e.deptno where d.deptno=e.deptno) group by dname,deptno;
    
    begin
        for v_emp in cur_dept
        loop
          dbms_output.put_line('部门编号   '||v_emp.deptno||
                               '部门名称   '||v_emp.dname|| 
                               '总数   '||v_emp.v_count);
        end loop;
    end;

    2,用游标属性%rowcount实现输出前十个员工的信息

    declare
      cursor cur_emp is select *from emp;
     
     begin
       for v_emp in cur_emp
       loop
           if cur_emp%rowcount<=10 then
             dbms_output.put_line(cur_emp%rowcount||'   '||'   员工编号  '||v_emp.empno||
                                  '  员工姓名  '||v_emp.empno||'  员工工作  '||v_emp.job||
                                  '  入职日期  '||v_emp.hiredate||'  基本工资  '||v_emp.sal);
           end if;
       end loop;
       
     end;

    3,通过使用游标来显示dept表中的部门名称,及其相应的员工列表(提示:可以使用双重循环)。

     declare
    
     cursor cur_emp is select * from emp;
     cursor cur_dept is select * from dept;
     begin
       for v_dept in cur_dept
         loop
           dbms_output.put_line('员工部门:'||v_dept.dname);
           for v_emp in cur_emp
            loop
               if v_emp.deptno=v_dept.deptno then
               dbms_output.put_line('员工姓名:'||v_emp.ename);
               end if;
           end loop;
         end loop;
     
     end;

    4,接受一个部门号,使用For循环,从emp表中显示该部门的所有雇员的姓名,工作和薪水。

     declare
         cursor cur_emp (v_deptno number) is select*from emp where deptno=v_deptno;
         type emp_table_type is table of emp%rowtype
         index by binary_integer;
         v_emp emp_table_type;
     begin
         open cur_emp(20);
         fetch cur_emp bulk collect into v_emp;
         close cur_emp;
         for v_i in v_emp.first..v_emp.last
         loop
          dbms_output.put_line('员工姓名  '||v_emp(v_i).ename||
                               '员工工作  '||v_emp(v_i).job||
                               '员工薪水  '||v_emp(v_i).sal); 
          
         end loop;   
     end;

    5,编写一个程序块,将emp表中前5人的名字,及其出的工资等级(salgrade)显示出来。

    declare 
       cursor cur_emp ( v_deptno varchar2) is select ename, job,sal from emp where deptno=(select deptno from dept where dname=v_deptno);
       
     begin
        
          for  v_emp in cur_emp('SALES')
          loop
            dbms_output.put_line('  员工姓名  '||v_emp.ename||
                                 '  员工工作  '||v_emp.job||
                                 '  员工薪水  '||v_emp.sal);
          end loop;        
          
     end;

    7,用游标获取所有收入超过2000的销售员(job为salesman)的信息

     declare
     cursor cur_emp is select * from emp;
     begin
       for v_emp in cur_emp
         
       loop
         if v_emp.job='SALESMAN' and v_emp.sal>1500 then
           dbms_output.put_line('  员工姓名   '||v_emp.ename||
                                '  基本工资   '||v_emp.sal);
         end if;
       end loop;
     end;

    8,编写一个PL/SQL程序块,从emp表中对名字以"A"或"S"开始的所有雇员按他们基本薪水的10%给他们加薪。

    declare 
     cursor cur_emp is select * from emp where (ename like 'A%') or  (ename like 'S%');
    begin
      for v_emp in cur_emp
        
      loop
        update emp set sal=sal+sal*0.1 where ename=v_emp.ename;
        dbms_output.put_line('修改成功');
      end loop;
      
    end;
  • 相关阅读:
    494. Target Sum 添加标点符号求和
    636. Exclusive Time of Functions 进程的执行时间
    714. Best Time to Buy and Sell Stock with Transaction Fee有交易费的买卖股票
    377. Combination Sum IV 返回符合目标和的组数
    325. Maximum Size Subarray Sum Equals k 和等于k的最长子数组
    275. H-Index II 递增排序后的论文引用量
    274. H-Index论文引用量
    RabbitMQ学习之HelloWorld(1)
    java之struts2的数据处理
    java之struts2的action的创建方式
  • 原文地址:https://www.cnblogs.com/hph1728390/p/10846649.html
Copyright © 2011-2022 走看看