WEB开发网
开发学院数据库Oracle Oracle Cursors语法总结 阅读

Oracle Cursors语法总结

 2008-09-06 12:51:27 来源:WEB开发网   
核心提示: LoopIf emps%found then Dbms_output.put_line('Looping over record '||row|| ' of ' || emps%rowcount); Fetch emps into emp; Row := r

Loop
 If emps%found then
  Dbms_output.put_line('Looping over record '||row|| ' of ' || emps%rowcount);
  Fetch emps into emp;
  Row := row + 1;
 Elsif emps%notfound then
  Exit; ---exit loop, not IF
 End if;
End loop;

If emps%isopen then
 Close emps;
End if;
End;
/

显式和隐式游标的区别:

尽量使用隐式游标,避免编写附加的游标控制代码(声明,打开,获取,关闭),也不需要声明变量来保存从游标中获取的数据。

3.REF CURSOR游标:

动态游标,在运行的时候才能确定游标使用的查询。分类:

1.强类型(限制)REF CURSOR,规定返回类型

2.弱类型(非限制)REF CURSOR,不规定返回类型,可以获取任何结果集。

TYPE ref_cursor_name IS REF CURSOR [RETURN return_type]

Declare
Type refcur_t is ref cursor;

Type emp_refcur_t is ref cursor return employee%rowtype;
Begin
Null;
End;
/

强类型举例:

declare

--声明记录类型

type emp_job_rec is record(
 employee_id number,
 employee_name varchar2(50),
 job_title varchar2(30)
);

--声明REF CURSOR,返回值为该记录类型

type emp_job_refcur_type is ref cursor
 return emp_job_rec;

--定义REF CURSOR游标的变量

emp_refcur emp_job_refcur_type;
emp_job emp_job_rec;
begin
open emp_refcur for
 select e.employee_id,
  e.first_name || ' ' ||e.last_name "employee_name",
  j.job_title
 from employees e, jobs j
 where e.job_id = j.job_id and rownum < 11 order by 1;
fetch emp_refcur into emp_job;
while emp_refcur%found loop
 dbms_output.put_line(emp_job.employee_name || '''s job is ');
 dbms_output.put_line(emp_job.job_title);
 fetch emp_refcur into emp_job;
end loop;
end;
/

上一页  1 2 3 

Tags:Oracle Cursors 语法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接