Welcome 微信登录

首页 / 数据库 / MySQL / Oracle显式游标小例子

1:游标实例,显示出姓名和部门DECLARE     name VARCHAR2(50);     department_name varchar(20);   --定义两个变量来存放employees表和departments表中的内容     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; 
2:第二个例子,   公司上市,决定给员工提高薪资,入职时间没超过1年涨100,1000元封顶   DECLARE      hire_date DATE;      --定义2个变量存放employee表中的内容      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;      END;3:使用循环游标简化游标的读取    语法:         FOR  <类型>  IN  <游标名>  LOOP         --操作各行数据        END LOOP;      例子:     DECLARE            TYPE  employee_record IS  RECORD    --定义一个RECORD类型的变量,里面包含name和department_name两个变量             (                  name VARCHAR2(50),                  department_name varchar(20)             );             CURSOR  emp_cur IS                       SELECT name, department_name                     FROM employee e, departments d                     WHERE e.department_id = d.department_id;            BEGIN                 FOR  employee_record IN emp_cur LOOP                 dbms_output.put_line                     (employee_record.name || " 在 " || employee_record.department_name);                 END LOOP;            END;Oracle通过PL/SQL数据泵导出导入数据的命令Oracle隐式游标小例子相关资讯      Oracle数据库  Oracle入门教程  oracle数据库教程 
  • Oracle数据库全球化  (03月01日)
  • Oracle数据库日期过滤方法性能比较  (02/02/2015 13:20:26)
  • Oracle数据库安装中端口被占用问题  (10/29/2014 07:42:24)
  • 在CentOS 6.6上搭建C++运行环境并  (10/10/2015 19:44:40)
  • Oracle数据库无法使用localhost和  (11/14/2014 16:39:10)
  • 使用SQLT来构建Oracle测试用例  (08/28/2014 06:17:41)
本文评论 查看全部评论 (0)
表情: 姓名: 字数