游标管理教学课件PPT.ppt

上传人:laozhun 文档编号:2363505 上传时间:2023-02-15 格式:PPT 页数:26 大小:586.52KB
返回 下载 相关 举报
游标管理教学课件PPT.ppt_第1页
第1页 / 共26页
游标管理教学课件PPT.ppt_第2页
第2页 / 共26页
游标管理教学课件PPT.ppt_第3页
第3页 / 共26页
游标管理教学课件PPT.ppt_第4页
第4页 / 共26页
游标管理教学课件PPT.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《游标管理教学课件PPT.ppt》由会员分享,可在线阅读,更多相关《游标管理教学课件PPT.ppt(26页珍藏版)》请在三一办公上搜索。

1、第十一章,游标管理,回顾,PL/SQL语言的特点?怎样处理异常?,目标,游标的概念游标的作用游标的使用,使用游标的步聚:,游标简介 2-1,执行 PL/SQL 程序,内存单元,保存到游标中,一次处理一行,检索行,提取行,游标简介 2-2,逐行处理查询结果,以编程的方式访问数据游标的类型:,隐式游标,REF 游标,显式游标,在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标。,显式游标用于处理返回多行的查询。,REF 游标用于处理运行时才能确定的动态 SQL 查询的结果,游标类型,隐式游标 4-1,在PL/SQL中使用DML语句时自动创建隐式游标隐式游标自动声明、打开和关闭,其名

2、为 SQL通过检查隐式游标的属性可以获得最近执行的DML 语句的信息隐式游标的属性有:%FOUND SQL 语句影响了一行或多行时为 TRUE%NOTFOUND SQL 语句没有影响任何行时为TRUE%ROWCOUNT SQL 语句影响的行数%ISOPEN-游标是否打开,始终为FALSE,隐式游标 4-2,SQL SET SERVEROUTPUT ONSQL BEGINUPDATE emp set sal=sal+50 WHERE empno=7369;IF SQL%FOUND THENDBMS_OUTPUT.PUT_LINE(表已更新);END IF;END;/,只有在 DML 语句影响一行

3、或多行时,才返回 True,隐式游标 4-3,SQL SET SERVEROUTPUT ONSQL DECLARE eno emp.empno%type:=/,如果 DML 语句不影响任何行,则返回 True,隐式游标 4-4,SQL SET SERVEROUTPUT ON SQL BEGINUPDATE empSET emp=Rob MathewWHERE empno=7369;DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);END;/,返回 DML 语句影响的行数,SELECT INTO 语句 2-1,SQL SET SERVEROUTPUT ONSQL DECLAR

4、E empid emp.empno%type;name VARCHAR2(10);BEGINempid:=/,如果没有与SELECT INTO语句中的条件匹配的行,将引发NO_DATA_FOUND异常,SELECT INTO 语句 2-2,SQL SET SERVEROUTPUT ONSQL DECLARE empid number;BEGINSELECT empno INTO empid FROM emp;EXCEPTIONWHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE(该查询提取多行);END;/,如果 SELECT INTO 语句返回多个值,将引

5、发TOO_MANY_ROWS异常,显式游标-1,显式游标在 PL/SQL 块的声明部分定义查询,该查询可以返回多行显式游标的操作过程:声明一些变量,用于保存SELECT语句返回的的列值。声明游标,并指定SELECT语句。打开游标。从游标获取记录。关闭游标。,数据库,打开游标,提取行,变量,关闭游标,显式游标 2-2,SQLSET SERVER OUTPUT ONSQLDECLARE empSal emp.sql%TYPE;CURSOR sal_cur IS SELECT sal FROM emp WHERE sal2500;BEGIN OPEN sal_cur;LOOP FETCH sal_c

6、ur INTO empSal;EXIT WHEN sal_cur%NOTFOUND;DBMS_OUTPUT.PUT_LINE(工资=:|empSal);END LOOP;CLOSE sal_cur;END;,声明游标,打开游标,提取行,关闭游标,带参数的显式游标,声明显式游标时可以带参数以提高灵活性声明带参数的显式游标的语法如下:CURSOR()IS select_statement;,SQL SET SERVEROUTPUT ONSQL declare-按员工编号查找员工信息no emp.empno%type;name emp.ename%type;-定义带参数的游标cursor my_cu

7、r(parNo emp.empno%type)is select ename from emp where empno=parNo;begin-打开no:=/,课堂编程,显示员工的姓名,工资以及其工资等级。,declare-自定义记录类型type my_record is record(enmpname emp.ename%type,empsal emp.sal%type,ss salgrade.grade%type);empInfo my_record;-声明游标cursor my_cur is select e.ename,e.sal,s.grade from emp e join sal

8、grade s on e.sal between s.losal and s.hisal;begin-打开游标open my_cur;loopfetch my_cur into empInfo;exit when my_cur%notfound;dbms_output.put_line(empInfo.enmpname|empInfo.ss);end loop;close my_cur;-关闭游标end;,使用显式游标更新行 2-1,允许使用游标删除或更新活动集中的行声明游标时必须使用 SELECT FOR UPDATE语句 CURSOR IS SELECT statement FOR UPD

9、ATE;UPDATE SET WHERE CURRENT OF,更新的语法,DELETE FROM WHERE CURRENT OF,删除的语法,使用显式游标更新行 2-2,SQL SET SERVEROUTPUT ONSQL declareempSal emp.sal%type;cursor my_cur is select sal from emp where empno=7369for update of sal;begin-打开open my_cur;loopfetch my_cur into empSal;exit when my_cur%notfound;update emp se

10、t sal=empSal*1.1 更新员工的where current of my_cur;end loop;close my_cur;end;/,循环游标 2-1,循环游标用于简化游标处理代码当用户需要从游标中提取所有记录时使用不需要显示打开和关闭游标循环游标的语法如下:,FOR IN LOOPEND LOOP;,循环游标 2-2,SQL SET SERVER OUTPUT ONSQL DECLARE CURSOR my_cur IS SELECT empno,ename,sal FROM emp;BEGIN FOR cur IN my_cur LOOP DBMS_OUTPUT.PUT_LI

11、NE(员工编号:|cur.empno|员工姓名:|cur.ename|员工工资:|cur.sal);END LOOP;END;,REF 游标和游标变量 3-1,REF 游标和游标变量用于处理运行时动态执行的 SQL 查询创建游标变量需要两个步骤:声明 REF 游标类型声明 REF 游标类型的变量用于声明 REF 游标类型的语法为:TYPE IS REF CURSORRETURN;,REF 游标和游标变量 3-2,TYPE my_curtype IS REF CURSOR RETURN stud_det%ROWTYPE;order_cur my_curtype;,声明强类型的 REF 游标,打开

12、游标变量的语法如下:OPEN cursor_name FOR select_statement;,TYPE my_ctype IS REF CURSOR;stud_cur my_ctype;,声明弱类型的 REF 游标,REF 游标和游标变量 3-3,SQL DECLARE declaretype my_curtype is ref cursorreturn emp%rowtype;my_cur my_curtype;empInfo emp%rowtype;beginopen my_cur for select*from emp;loopfetch my_cur into empInfo;ex

13、it when my_cur%notfound;dbms_output.put_line(员工编号|empInfo.empno);dbms_output.put_line(员工姓名|empInfo.ename);end loop;end;/,声明REF游标类型,声明游标变量,游标变量的优点和限制,游标变量的功能强大,可以简化数据处理。游标变量的优点有:可从不同的 SELECT 语句中提取结果集可以作为过程的参数进行传递可以引用游标的所有属性可以进行赋值运算使用游标变量的限制:不能在程序包中声明游标变量FOR UPDATE子句不能与游标变量一起使用不能使用比较运算符,使用游标变量执行动态 SQL

14、,可以使用游标变量执行动态构造的 SQL 语句打开执行动态 SQL 的游标变量的语如下:OPEN cursor_name FOR dynamic_sqlstring USING bind_argument_list;,-查询员工表中工资大于某一个给定值的员工信息declareempInfo emp%rowtype;-定义行类型变量 type my_curType is ref cursor;-当使用动态SQL时只能定义弱类型my_cur my_curType;-声明游标empSal number:=1500;-工资begin-打开游标open my_cur for select*from em

15、p where sal:1 order by sal desc using empSal;dbms_output.put_line(工资大于|empSal|的员工有:);loopfetch my_cur into empInfo;exit when my_cur%notfound;dbms_output.put_line(员工编号:|empInfo.empno);dbms_output.put_line(员工姓名:|empInfo.ename);end loop;close my_cur;end;/,课堂编程,用引用游标显示所有员工的信息由用户输入确定显示那张表的信息显示工资大于2000的的所有员工信息显示工资大于2000并小于3000的员工信息。用星型显示每一个员工的工资等级。用游标,总结,游标用于处理查询结果集中的数据游标类型有:隐式游标、显式游标和 REF 游标隐式游标由 PL/SQL 自动定义、打开和关闭显式游标用于处理返回多行的查询显式游标可以删除和更新活动集中的行要处理结果集中所有记录时,可使用循环游标在声明 REF 游标时,不需要将 SELECT 语句与 其关联,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号