欢迎来到天天文库
浏览记录
ID:36886721
大小:408.50 KB
页数:36页
时间:2019-05-10
《《PLSQL中的游标》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PL/SQL中的游标游标的概念在PL/SQL程序中,对于处理多行记录的事务经常使用游标来实现。为了处理SQL语句,ORACLE必须分配一片叫上下文(contextarea)的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集(activeset)。游标是一个指向上下文的句柄(handle)或指针。通过游标,PL/SQL可以控制上下文区和处理语句时上下文区会发生些什么事情。游标的概念对于不同的SQL语句,游标的使用情况不同:SQL语句游标非查询语句隐式的结果是单行的查询语句隐式
2、的或显示的结果是多行的查询语句显示的显式游标处理显式游标需要四个PL/SQL步骤:定义游标:就是定义一个游标名,以及与其相对应的SELECT语句,其一般形式为:CURSORcursor_nameISselect_statement;其中:游标声明部分是唯一可以出现在模块声明部分的步骤,其他三个步骤都在执行或异常处理部分中游标名是标识符,所以也有作用域,并且必须在使用前进行说明任何SELECT语句都是合法的,但是SELECT…INTO语句是非法的在声明部分的末尾声明游标显式游标处理显式游标需要四个PL/SQL步骤:打开游标:就是执
3、行游标所对应的SELECT语句,将其查询结果放入工作区,并且指针指向工作区的首部,标识游标结果集合。其中:PL/SQL程序不能用OPEN语句重复打开同一个游标OPENcursor_name显式游标处理显式游标需要四个PL/SQL步骤:提取游标:就是检索结果集合中的数据行,放入指定的输出变量中。FETCHcursor_nameINTO{variable_list
4、record_variable};显式游标处理显式游标需要四个PL/SQL步骤:关闭游标:当提取和处理完游标结果集合数据后,应及时关闭游标,以释放该游标所占用的系统资源,
5、并使该游标的工作区变成无效,不能再使用FETCH语句取其中数据。关闭后的游标可以使用OPEN语句重新打开。CLOSEcursor_name;显式游标例:查询前10名员工的信息。DECLAREv_enameemp.ename%TYPE;v_salemp.sal%TYPE;CURSORc_cursorISSELECTename,salFROMempWHERErownum<11;BEGINOPENc_cursor;FETCHc_cursorINTOv_ename,v_sal;WHILEc_cursor%FOUNDLOOPDBMS_OU
6、TPUT.PUT_LINE(v_ename
7、
8、’---‘
9、
10、to_char(v_sal));FETCHc_cursorINTOv_ename,v_sal;ENDLOOP;CLOSEc_cursor;END;参数化游标例:DECLAREv_enameemp.ename%TYPE;v_salemp.sal%TYPE;CURSORc_cursor(P_salemp.sal%type)ISSELECTename,salFROMempWHEREsal>=P_sal;BEGINOPENc_cursor(1000);FETCHc_cursor
11、INTOv_ename,v_sal;WHILEc_cursor%FOUNDLOOPDBMS_OUTPUT.PUT_LINE(v_ename
12、
13、’---‘
14、
15、to_char(v_sal));FETCHc_cursorINTOv_ename,v_sal;ENDLOOP;CLOSEc_cursor;END;游标属性属性描述%FOUND布尔型属性,当最近一次读记录时成功返回,则值为TRUE;%NOTFOUND布尔型属性,与%FOUND相反%ISOPEN布尔型属性,当游标已打开时返回TRUE;%ROWCOUNT数字型属性,返回已从游标中读
16、取的记录数。游标属性DECLATECURSORC_cursoris……BEGINOPENC_cursorFETCHC_cursorINTO……FETCHC_cursorINTO……FETCHC_cursorINTO……CLOSEC_cursorEND;%FOUND返回错误%FOUND为NULL%FOUND为TRUE%FOUND为TRUE%FOUND返回错误%FOUND为FALSE游标属性DECLATECURSORC_cursoris……BEGINOPENC_cursorFETCHC_cursorINTO……FETCHC_curs
17、orINTO……FETCHC_cursorINTO……CLOSEC_cursorEND;%NOTFOUND返回错误%NOTFOUND为NULL%NOTFOUND为FALSE%NOTFOUND为FALSE%NOTFOUND返回错误%NOTFOUND为TRUE游标属
此文档下载收益归作者所有