ITPub博客

首页 > 数据库 > Oracle > orale第五章使用游标

orale第五章使用游标

Oracle 作者:pradapp 时间:2013-08-16 21:51:19 0 删除 编辑
游标概述:
隐式游标:
使用隐式游标的好处oracle自动为我们处理很多和游标相关的操作,缺点是代码中存在大量相同或相似select语句,不利于代码的重用,隐式游标用在只返回单行结果集的情况下。如果要返回多行,则必须用显示游标或者带bulk collect 子句的select语句
显示游标:
显示游标用在需要多行记录的情况下
采用显示游标,一般需要以下这些步骤:解析  绑定 打开 执行 提取 关闭 p书80
1》游标属性简介:
PL/SQL提供了六个游标属性,无论是隐式还是显示都支持:%found %nofound %rowcount %isopen %bulk_rowcount %bulk_exception  p书81
2》隐式游标
v_name varchar2(50);
begin
select ename into v_name from emp where empno=1;
dbms_output.put_line(v_name);
end;
3》显示游标
静态游标:
declare
cursor cur_jing for select ename from emp;
v_name varchar2(50);
begin
open cur_jing;
feach cur_jing 游标名 into v_name 记录或变量列表;
for x in 1..v_name.count loop
end loop;
close cur_jing; 
end;
动态游标:
declare
type cur_dong is ref cursor;
v_dong cur_dong;
v_name varchar2(50);
begin
open v_dong for select ename  from emp;
 -- 指向结果集的表数据
feach v_dong into v_name;
        dbms_output.put_line(v_name);
        exit when v_dong%notfound; 
end;


 -- 动态游标 系统游标
     declare
    v_cursor sys_refcursor;
    v_emp emp.ename%type;
   begin
     open v_cursor for select ename from emp;
     loop
       -- 指向结果集的表数据
        fetch v_cursor into v_emp;
        dbms_output.put_line(v_emp);
        exit when v_cursor%notfound;
     end loop;
   end;


  动态游标和静态游标的比较
 
应用bulk collect
declare 
cursor cur_emp is select * from emp;
type row_emp is table of varchar2 index by binary_integer;
row_emp row_emp_type;
begin
 open cur_emp;
fetch cur_emp bulk collect into  row_emp;
for x 1..row_emp.cout loop
dbms_output.put_line(cur_emp(x));
end loop;
end;
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23052960/viewspace-1116218/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-12-20