欢迎来到天天文库
浏览记录
ID:38569169
大小:471.01 KB
页数:24页
时间:2019-06-15
《oracle数据库基础6--游标管理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章游标管理回顾PL/SQL是一种可移植的高性能事务处理语言PL/SQL引擎驻留在Oracle服务器中PL/SQL块由声明部分、可执行部分和异常处理部分组成PL/SQL支持的数据类型包括标量数据类型、LOB数据类型和属性类型控制结构包括条件控制、循环控制和顺序控制PL/SQL支持动态SQL运行时出现的错误叫做异常异常可以分为预定义异常和用户定义的异常www.yucedu.com2目标掌握游标管理技巧www.yucedu.com3游标简介2-1Oracle服务器执行PL/SQL程序内存单元保存到游标中一次处理一行检索行提取行www.yucedu.co
2、m4游标简介2-2逐行处理查询结果,以编程的方式访问数据游标的类型:隐式游标REF游标显式游标在PL/SQL程序中执行DMLSQL语句时自动创建隐式游标。显式游标用于处理返回多行的查询。REF游标用于处理运行时才能确定的动态SQL查询的结果游标类型www.yucedu.com5隐式游标4-1在PL/SQL中使用DML语句时自动创建隐式游标隐式游标自动声明、打开和关闭,其名为SQL通过检查隐式游标的属性可以获得最近执行的DML语句的信息隐式游标的属性有:%FOUND–SQL语句影响了一行或多行时为TRUE%NOTFOUND–SQL语句没有影响任何行时为
3、TRUE%ROWCOUNT–SQL语句影响的行数%ISOPEN-游标是否打开,始终为FALSEwww.yucedu.com6隐式游标4-2SQL>SETSERVEROUTPUTONSQL>BEGINUPDATEtoysSETtoyprice=270WHEREtoyid='P005';IFSQL%FOUNDTHENDBMS_OUTPUT.PUT_LINE(‘表已更新');ENDIF;END;/只有在DML语句影响一行或多行时,才返回Truewww.yucedu.com7隐式游标4-3SQL>SETSERVEROUTPUTONSQL>DECLAREv_T
4、OYIDTOYS.ID%type:='&TOYID';v_TOYNAMETOYS.NAME%Type:='&TOYNAME';BEGINUPDATETOYSSETNAME=v_TOYNAMEWHEREtoyid=v_TOYID;IFSQL%NOTFOUNDTHENDBMS_OUTPUT.PUT_LINE('编号未找到。');ELSEDBMS_OUTPUT.PUT_LINE(‘表已更新');ENDIF;END;/如果DML语句不影响任何行,则返回Truewww.yucedu.com8隐式游标4-4SQL>SETSERVEROUTPUTONSQL>BEG
5、INUPDATEvendor_masterSETvenname='RobMathew'WHEREvencode='V004';DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);END;/返回DML语句影响的行数www.yucedu.com9SELECTINTO语句2-1SQL>SETSERVEROUTPUTONSQL>DECLAREempidVARCHAR2(10);desigVARCHAR2(10);BEGINempid:='&Employeeid';SELECTdesignationINTOdesigFROMemployeeW
6、HEREempno=empid;EXCEPTIONWHENNO_DATA_FOUNDTHENDBMS_OUTPUT.PUT_LINE('职员未找到');END;/如果没有与SELECTINTO语句中的条件匹配的行,将引发NO_DATA_FOUND异常www.yucedu.com10SELECTINTO语句2-2SQL>SETSERVEROUTPUTONSQL>DECLAREempidVARCHAR2(10);BEGINSELECTempnoINTOempidFROMemployee;EXCEPTIONWHENTOO_MANY_ROWSTHENDBMS
7、_OUTPUT.PUT_LINE('该查询提取多行');END;/如果SELECTINTO语句返回多个值,将引发TOO_MANY_ROWS异常www.yucedu.com11显式游标2-1显式游标在PL/SQL块的声明部分定义查询,该查询可以返回多行显式游标的操作过程:数据库打开游标30George344Roger245James1Stud_mrksStud_namestud_no提取行变量关闭游标www.yucedu.com12显式游标2-2SQL>SETSERVEROUTPUTONSQL>DECLAREmy_toy_pricetoys.toypr
8、ice%TYPE;CURSORtoy_curISSELECTtoypriceFROMtoysWHEREtoy
此文档下载收益归作者所有