您的位置:首页 > 数据库 > Oracle

oracle 游标示例

2016-12-26 11:59 260 查看
DECLARE

  name VARCHAR2(50);         --定义2个变量来存放employees表和departments表中的内容

  department_name varchar(20);

  CURSOR emp_cur IS          --定义游标emp_cur

    SELECT name,department_name

    FROM employees e,departments d

    WHERE e.department_id=d.department_id; --选出所有员工的姓名和所在部门

BEGIN

  OPEN emp_cur;              --打开游标

  LOOP

    FETCH emp_cur INTO name,department_name;

                             --每次将一行数据放入变量中,游标后移

    EXIT WHEN emp_cur%NOTFOUND;

    dbms_output.put_line(name||' 在 '||department_name);

                            --输出姓名和所在部门

  END LOOP;

  CLOSE emp_cur;

END;

/

DECLARE

  hire_date DATE;         --定义2个变量来存放employees表中的内容

  e_id NUMBER;

  CURSOR emp_cur IS       --定义游标emp_cur

    SELECT id,hire_date

    FROM employees;       --选出所有员工的姓名和入职时间

BEGIN

  OPEN emp_cur;           --打开游标

  LOOP

    FETCH emp_cur INTO e_id,hire_date;

                          --每次将一行数据放入变量中,游标后移

    EXIT WHEN emp_cur%NOTFOUND;

    IF 100*(2010-to_char(hire_date,'yyyy'))<1000 THEN

      UPDATE salary

      SET salaryvalue=salaryvalue+100*(2010-to_char(hire_date,'yyyy'))

      WHERE employeeid=e_id;

    ELSE

      UPDATE salary

      SET salaryvalue=salaryvalue+1000

      WHERE employeeid=e_id;

    END IF;

  END LOOP;

  CLOSE emp_cur;

END;

/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息