第3章 PLSQL编程(2).ppt

第3章 PLSQL编程(2).ppt

ID:48832960

大小:270.00 KB

页数:32页

时间:2020-01-27

第3章  PLSQL编程(2).ppt_第1页
第3章  PLSQL编程(2).ppt_第2页
第3章  PLSQL编程(2).ppt_第3页
第3章  PLSQL编程(2).ppt_第4页
第3章  PLSQL编程(2).ppt_第5页
资源描述:

《第3章 PLSQL编程(2).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、大型数据库概论IntroductionofLargeDatabase第3章PLSQL编程(2)学习目标1、理解游标的概念及分类。2、掌握显式游标和隐式游标的使用。3、掌握带参数游标的使用。4、掌握游标的常见属性。5、掌握SQL*Plus/Worksheet的使用。游标(Cursor):是Oracle9i的一种内存结构,用来存放SQL语句或程序执行后的结果。游标使用SELECT语句从基表或视图中取出数据并放入内存,最初游标指向查询结果的首部,随着游标的推进,就可以访问相应的记录。游标分为显式和隐式两种:前者需要用户定义,需要时打开,使用完后

2、关闭;后者则完全是自动的,无需用户干预。游标显式游标显式游标:PL/SQL中处理显式游标需经过四个步骤:声明游标、打开游标、推进游标、关闭游标。1.声明游标显式游标要在PL/SQL语句块的声明部分中定义,语法如下:CURSOR游标名ISSELECT语句;注意:该SELECT语句不应包含INTO子句。如CURSORMYCURSORISselect*fromsystem.student;表示声明了一个游标MYCURSOR。2.打开游标语法是:OPEN游标名;这里的游标名必须事先声明过,如OPENMYCURSOR;3.推进游标:指从游标中取出游

3、标当前所指的数据行,然后使游标指针指向下一个数据行。语法是:FETCH游标名INTO变量列表;或FETCH游标名INTO记录变量名;注意:游标指针只能向下移动,不能回退。使用FETCH语句之前,必须先打开游标。4.关闭游标当完成游标的处理后应释放与游标相关的资源。语法是:CLOSE游标名;注意:游标一旦关闭,再使用它来检索数据就是非法的。关闭一个已经关闭的游标也是非法的。隐式游标:Oracle9i为每个不属于显式游标的SQLDML语句都创建了一个隐式游标。由于隐式游标没有名称,所以它也称为SQL游标。与显式游标不同,不能对一个隐式游标显式

4、地执行OPEN、FETCH和CLOSE语句。Oracle9i隐式地打开、处理和关闭SQL游标。如Oracle9i为下列SQL语句隐式地创建了一个游标:UPDATESYSTEM.STUDENTSETSAGE=SAGE+1;和显式游标一样,隐式游标也有下述四个属性,引用方法只要在属性前加上SQL即可。隐式游标游标的属性游标的属性:游标的属性并非返回一个类型,而是返回可以在表达式中使用的值。游标有四个属性:%FOUND、%NOTFOUND、%ISOPEN和%ROWCOUNT。1.%FOUND:若当前FETCH语句成功取出一行数据,则%FOUND

5、返回TRUE;否则返回FALSE。该属性可以用来判断是否应关闭游标,在循环结构中常用该属性决定循环的结束。2.%NOTFOUND:与%FOUND的意义正好相反。3.%ISOPEN:当游标已经打开且尚未关闭时,%ISOPEN返回TRUE。该属性可以用来判断游标的状态。4.%ROWCOUNT:%ROWCOUNT返回游标已检索的数据行个数。例3.7从scott.student表中选取所有学生的学号和姓名。DECLARECURSORMYCURSORISSELECTSno,SnameFROMscott.student;V_snoscott.stud

6、ent.sno%TYPE;V_snamescott.student.sname%TYPE;BEGINOPENMYCURSOR;FETCHMYCURSORINTOV_sno,V_sname;LOOPIFMYCURSOR%FOUNDTHENDBMS_OUTPUT.PUT_LINE(TO_CHAR(MYCURSOR%ROWCOUNT)

7、

8、TO_CHAR(V_sno)

9、

10、TO_CHAR(V_sname));FETCHMYCURSORINTOV_sno,V_sname;ELSIFMYCURSOR%NOTFOUNDTHENEXIT;ENDIF;END

11、LOOP;IFMYCURSOR%ISOPENTHENCLOSEMYCURSOR;ENDIF;END;参数化游标根据参数的不同选取的数据行也不同,从而达到动态使用的目的。例3.8使用带参数的游标,根据输入的姓名从scott.student表中选取相应学生的学号和姓名。DECLARECURSORMYCURSOR(p_namescott.student.sname%TYPE)ISSELECTSno,SnameFROMscott.studentWHEREsname=p_name;V_snoscott.student.sno%TYPE;V_snam

12、escott.student.sname%TYPE;带参数的游标BEGINOPENMYCURSOR('李军');FETCHMYCURSORINTOV_sno,V_sname;LOOPIFMYC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。