首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Oracle学习札记(5) 在PLSQL中使用游标获取数据

2012-09-24 
Oracle学习笔记(5) 在PLSQL中使用游标获取数据这是第五章的学习笔记,学习完第四章的数据库操作和事务之后,

Oracle学习笔记(5) 在PLSQL中使用游标获取数据
    这是第五章的学习笔记,学习完第四章的数据库操作和事务之后,开始要学习游标的使用了……,希望大家能多给俺一些支持啊!
    编程时使用的工具是PLSQL Developer 7.1.4

隐式游标
隐式游标的属性等在第四章笔记中已记录了一部分
如果要确保属性指向想要的SQL语句,那么就在SQL语句执行后,立即将属性值保存到一个本地变量中
用存储过程来实现这种效果:
先定义一个存储过程remove_from_emp ,用于从雇员中删除一个员工
在存储过程的参数中 in 表示输入,out 表示输出

   if emp_cur4%found then      update employee set salary = salary + 500 where current of emp_cur4; --returning salary into n_salary;   end if;   commit;   n_salary := emp_row4.salary + 500;   dbms_output.put_line('员工' || emp_row4.name || '原来的工资是' || emp_row4.salary || '元,增加工资后现在的工资是' || n_salary || '元');   close emp_cur4;      -- 打开强类型游标变量   open emp_ref1 for select * from employee order by salary;   -- 在游标变量中提取数据   fetch emp_ref1 bulk collect into emp_table;   for i in 1..emp_table.count loop       dbms_output.put_line(emp_table(i).name || '   本月工资 ' || emp_table(i).salary);   end loop;   -- 关闭游标变量   close emp_ref1;   -- 打开弱类型游标变量   open emp_ref2 for select name,job from employee;   loop      fetch emp_ref2 into emp_info;      exit when emp_ref2%notfound;      dbms_output.put_line(emp_info.name || '的工作是 ' || emp_info.job);    end loop;   close emp_ref2;   -- 打开Oracle系统游标   open sys_cursor for select name,hiredate from employee order by hiredate desc;   loop      fetch sys_cursor into emp_info;      exit when sys_cursor%notfound;      dbms_output.put_line(emp_info.name || '加入公司的时间是 ' || emp_info.job);    end loop;   close sys_cursor;exception   when NO_DATA_FOUND then dbms_output.put_line('查询不到员工编号为' || n_empno || '的员工!');   when TOO_MANY_ROWS then dbms_output.put_line('数据完整性错误,员工编号' || n_empno || '重复!');   when OTHERS then dbms_output.put_line('PL/SQL执行错误!' || sqlerrm);end;/
1 楼 guji528 2010-04-06   写存储过程经常都会用到游标,总结得很全面

热点排行