欢迎来到天天文库
浏览记录
ID:40563516
大小:41.93 KB
页数:14页
时间:2019-08-04
《Oracle开发之REF_CURSOR》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、前言关于REF_CURSOR我们已经不再陌生,在前边的博客我们已经接触过了REF_CURSOR:在博客《怎样让Oracle的存储过程返回结果集》中我们在一个返回结果集的HelloWorld级别的存储过程实例中用到了REF_CURSOR,在博客《烟草局绩效考核系统打分模块开发笔记》中我们在一个真实的项目中体会到REF_CURSOR给我们带来的神奇效果。今天,我们将通过学习Oracle官方的这篇《Oracle开发之REF_CURSOR》进一步解开REF_CURSOR的神秘面纱,通过本文的学习,我们对REF_CURSOR的理解
2、将会更加深入,而在以后的项目中对它的使用也必将更加规范。正文OracleREF_CURSOR简介使用REF_CURSOR我们可以从存储过程中得到一个结果集对象。REF_CURSOR分为两种基本类型:强类型REF_CURSOR和弱类型REF_CURSOR,强类型REF_CURSOR返回的数据类型和长度在编译期就应该指明,而弱类型REF_CURSOR不需要。强类型REF_CURSOR和Oracle9i之前的弱类型REF_CURSOR在包中应该这样定义:viewplainprint?1.createorreplacepacka
3、geREFCURSOR_PKGas2.TYPEWEAK8i_REF_CURSORISREFCURSOR;3.TYPESTRONG_REF_CURSORISREFCURSORRETURNEMP%ROWTYPE;4.endREFCURSOR_PKG;viewplaincopytoclipboardprint?1.createorreplacepackageREFCURSOR_PKGas2.TYPEWEAK8i_REF_CURSORISREFCURSOR;3.TYPESTRONG_REF_CURSORISREFCURSORRE
4、TURNEMP%ROWTYPE;4.endREFCURSOR_PKG;返回REF_CURSOR的PL/SQL存储过程的编写示例:viewplainprint?1./**untilOracle9*/2.createorreplaceproceduretest(p_deptnoINnumber3.,p_cursorOUT4.REFCURSOR_PKG.WEAK8i_REF_CURSOR)5.is6.begin7.openp_cursorFOR8.select*9.fromemp10.wheredeptno=p_deptno;
5、11.endtest;viewplaincopytoclipboardprint?1./**untilOracle9*/2.createorreplaceproceduretest(p_deptnoINnumber3.,p_cursorOUT4.REFCURSOR_PKG.WEAK8i_REF_CURSOR)5.is6.begin7.openp_cursorFOR8.select*9.fromemp10.wheredeptno=p_deptno;1.endtest;Oracle9i之后,我们可以使用SYS_REFCURS
6、OR作为REF_CURSOR的返回类型,例如:viewplainprint?1./**FromOracle9*/2.createorreplaceproceduretest(p_deptnoINnumber3.,p_cursorOUTSYS_REFCURSOR)4.is5.begin6.openp_cursorFOR7.select*8.fromemp9.wheredeptno=p_deptno;10.endtest;11.12.13./*Strongtype*/14.15.createorreplaceprocedur
7、etest(p_deptnoINnumber16.,p_cursorOUTREFCURSOR_PKG.STRONG17.REF_CURSOR)18.is19.begin20.openp_cursorFOR21.select*1.fromemp2.wheredeptno=p_deptno;3.endtest;viewplaincopytoclipboardprint?1./**FromOracle9*/2.createorreplaceproceduretest(p_deptnoINnumber3.,p_cursorOUT
8、SYS_REFCURSOR)4.is5.begin6.openp_cursorFOR7.select*8.fromemp9.wheredeptno=p_deptno;10.endtest;11.12.13./*Strongtype*/14.15.createorreplaceproceduretest(p_deptn
此文档下载收益归作者所有