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)