2024年4月3日发(作者:)

今天简单的总结一下PL/SQL中cursor(光标/游标)的用法.

相信不少做开发或维护的DBA在找工作的时候,遇到过类似的面视问题:请简单的描述一下

光标的类型,说一下普通光标和REF光标之间的区别,以及什么时候该正确应用哪一个?

这个题目,我着实难住了不少人,其实他们在具体开发的时候,也还是比较能够把握正确的

光标的使用的,但就是说不出来,当然了,这与大家自身的沟流交通能力是有关系的。有的

人不善于说,但做的却很好。扯的扯就走远了,最后唠叨一下:做技术这条路,能干不能说,

或者说会干不会包装,路是走不"远"的.

显式cursor

显式是相对与隐式cursor而言的,就是有一个明确的声明的cursor.显式游标的声明类似如

下(详细的语法参加plsql ref doc )

cursor cursor_name (parameter list) is select ...

游标从declare、open、fetch、close是一个完整的生命旅程。当然了一个这样的游标是可

以被多次open进行使用的,显式cursor是静态cursor,她的作用域是全局的,但也必须明

白,静态cursor也只有pl/sql代码才可以使用她。下面看一个简单的静态显式cursor的示

例:

declare

cursor get_gsmno_cur (p_nettype in varchar2) is

select gsmno

from gsm_resource

where nettype=p_nettype and status='0';

v_gsmno gsm_%type;

begin

open get_gsmno_cur('139');

loop

fetch get_gsmno_cur into v_gsmno;

exit when get_gsmno_cur%notfound;

dbms__line(v_gsmno);

end loop;

close emp_cur;

open get_gsmno_cur('138');

loop

fetch get_gsmno_cur into v_gsmno;

exit when get_gsmno_cur%notfound;

dbms__line(v_gsmno);