• 带参数的游标


      declare
       --定义游标, 因为需要对游标定义的数据进行修改操作, 所以添加了 for update 子句
       cursor sal_cursor(dept_id number) is 
       select salary sal 
       from employees 
       where department_id = dept_id 
       for update;
       
       --定义调整工资的基数变量
       v_temp number(3,2);
    
    
    begin
       --使用游标 for 循环,dept_id=>80这是赋值,下面只对80号部门操作
       for v_sal_rec in sal_cursor(dept_id=>80) loop
             
             if v_sal_rec.sal <= 5000 then
                v_temp := 0.05;
             elsif v_sal_rec.sal <= 10000 then
                v_temp := 0.03;
             elsif v_sal_rec.sal <= 15000 then
                v_temp := 0.02;   
             else
                v_temp := 0.01;
             end if;
             
             --执行修改操作, 因为定义游标时使用了 for update 子句, 
             --所以修改状态下可以使用 where current of cursor_name 来锁定当前行;
             update employees set salary = salary * (1 + v_temp) where current of sal_cursor;
             
       end loop;
       
    end;

    ==============================================================================================================

    declare
    cursor emp_cursor is select * from employees;
    v_emp_record employees%rowtype;
    begin
        open emp_cursor;
        fetch emp_cursor into v_emp_record;
        while emp_cursor%found loop
     --ceil(n) 取大于等于数值n的最小整数
     --decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)  
              update employees set salary =v_emp_record.salary + v_emp_record.salary * decode(ceil(v_emp_record.salary / 5000), 1, 0.05,
                                                                                2, 0.03,
                                                                                3, 0.02,
                                                                                0.01) where employee_id=v_emp_record.employee_id;
    
    
              dbms_output.put_line(v_emp_record.employee_id);
              
              fetch emp_cursor into v_emp_record;
        end loop;
        close emp_cursor;
    end;
  • 相关阅读:
    ORACLE游标概念讲解
    [转载]Oracle如何查看日志
    oracle 游标以及游标变量
    Oracle游标大全
    [转载]Oracle如何查看日志
    追踪从指缝溜走的时间
    《Falcon 初印象》幻灯分享
    百姓网那道题
    一个JavaScript写的黑白棋AI
    trac 推广 ppt 分享
  • 原文地址:https://www.cnblogs.com/nbkyzms/p/5031427.html
Copyright © 2020-2023  润新知