首页 oracle存储过程、函数和程序包

oracle存储过程、函数和程序包

举报
开通vip

oracle存储过程、函数和程序包专题七过程、函数和程序包回顾游标就是指向上下文区的句柄或指针。游标有两种类型:显式游标、隐式游标。四个游标属性:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT、SQL%ISOPEN显式游标的使用步骤:4个记录变量和%ROWTYPE带参数的游标游标FOR循环(循环游标)游标中的更新和删除REF游标教学目标掌握过程的用法掌握函数的用法理解过程与函数的相同点和不同点理解程序包的概念并能熟练应用工作任务用无参过程实现“HelloWorld!”程序用带输入参数的过程向表中插入记录用带输出参数的过程查询...

oracle存储过程、函数和程序包
专题七过程、函数和程序包回顾游标就是指向上下文区的句柄或指针。游标有两种类型:显式游标、隐式游标。四个游标属性:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT、SQL%ISOPEN显式游标的使用步骤:4个记录变量和%ROWTYPE带参数的游标游标FOR循环(循环游标)游标中的更新和删除REF游标教学目标掌握过程的用法掌握函数的用法理解过程与函数的相同点和不同点理解程序包的概念并能熟练应用工作任务用无参过程实现“HelloWorld!”程序用带输入参数的过程向表中插入记录用带输出参数的过程查询表中的记录数使用带输入输出参数的过程查询记录是否存在使用函数查询部门信息使用程序包封装过程和函数相关实践知识从开始菜单中打开SQL*Plus工具,以SCOTT用户的身份登录到数据库不带参数的过程2-1输入以下代码,创建一个最简单的过程功能:显示”HelloWorld!”CREATEORREPLACEPROCEDUREsp_helloWorldASBEGINDBMS_OUTPUT.PUT_LINE('HelloWorld!');ENDsp_helloWorld;不带参数的过程2-2执行过程EXECUTEsp_helloWorld;执行结果:删除过程DROPPROCEDUREsp_helloWorld;带输入参数的过程3-1实现的功能:向表dept中插入一条记录创建带输入参数的过程,代码为:带输入参数的过程3-2CREATEORREPLACEPROCEDUREsp_dept_insert(i_deptnoNUMBER,i_dnameVARCHAR2,i_locVARCHAR2)ASBEGININSERTINTOdeptVALUES(i_deptno,i_dname,i_loc);COMMIT;EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.PUT_LINE('添加失败!原因为:'||SQLERRM);ROLLBACK;ENDsp_dept_insert;带输入参数的过程3-3分别输入两组数据来执行过程,结果如下:带输出参数的过程3-1实现功能:通过输出参数count来得到dept表中的记录数创建带输出参数的过程CREATEORREPLACEPROCEDUREsp_getcount(o_countOUTNUMBER)ASBEGINSELECTCOUNT(*)INTOo_countFROMdept;ENDsp_getcount;带输出参数的过程3-2编写一段匿名的PL/SQL块来执行过程DECLAREcntNUMBER;BEGINsp_getcount(cnt);DBMS_OUTPUT.PUT_LINE('dept表中的记录数为:'||cnt);END;带输出参数的过程3-3输出结果:带INOUT参数的过程2-1实现功能:查询某个部门名称在表dept中是否已经存在创建带INOUT参数的过程,代码为:CREATEORREPLACEPROCEDUREsp_dept_dname_exist(io_valueINOUTVARCHAR2)ISl_countNUMBER;BEGINSELECTCOUNT(*)INTOl_countFROMdeptWHEREdname=io_value;IF(l_count>0)THENio_value:='存在';ELSEio_value:='不存在';ENDIF;ENDsp_dept_dname_exist;带INOUT参数的过程2-2执行过程:输出结果:部门名称ACCOUNTING存在!DECLAREl_iotestvarchar2(20):='ACCOUNTING';BEGINsp_dept_dname_exist(l_iotest);DBMS_OUTPUT.PUT_LINE('部门名称ACCOUNTING'||l_iotest||'!');END;函数4-1实现功能:按部门编号查询出表dept中的部门名称创建一个函数,代码为:函数4-2CREATEORREPLACEFUNCTIONf_dept_getname_byno(i_deptnoNUMBER)RETURNVARCHAR2ASl_dnameVARCHAR2(14);BEGINSELECTdnameINTOl_dnameFROMdeptWHEREdeptno=i_deptno;RETURNl_dname;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURN'错误!该编号的部门不存在!';ENDf_dept_getname_byno;函数4-3函数的调用及其输出结果:函数4-4删除函数DROPFUNCTIONf_dept_getname_byno过程与函数小结2-1共同点:两者的实质都是已命名的PL/SQL程序块,即子程序,它们是子程序的两种类型,存储在数据库中,可以从任何数据库客户端和前台应用程序中调用它们。过程与函数小结2-2不同点:过程函数参数模式可以是IN、OUT或INOUT参数模式只能是IN模式在语法规范中不包含RETURN子句在语法规范中必须包含RETURN子句在可执行语句部分可以有RETURN语句,但其后不能加任何表达式在可执行语句部分至少应该包含一条RETURNexpression语句可以用EXECUTE语句来执行不能用EXECUTE语句来执行程序包5-1利用程序包封装过程sp_dept_insert和函数f_dept_getname_byno程序包规范部分的代码:CREATEORREPLACEPACKAGEpkg_deptASPROCEDUREsp_dept_insert(i_deptnoNUMBER,i_dnameVARCHAR2,i_locVARCHAR2);FUNCTIONf_dept_getname_byno(i_deptnoNUMBER)RETURNVARCHAR2;ENDpkg_dept;程序包5-2程序包主体部分的代码CREATEORREPLACEPACKAGEBODYpkg_deptAS--过程sp_dept_insertPROCEDUREsp_dept_insert(i_deptnoNUMBER,i_dnameVARCHAR2,i_locVARCHAR2)ASBEGININSERTINTOdeptVALUES(i_deptno,i_dname,i_loc);COMMIT;EXCEPTIONWHENOTHERSTHENDBMS_OUTPUT.PUT_LINE('添加失败!原因为:'||SQLERRM);ROLLBACK;ENDsp_dept_insert;程序包5-3--函数f_num_rangeFUNCTIONf_dept_getname_byno(i_deptnoNUMBER)RETURNVARCHAR2ASl_dnameVARCHAR2(14);BEGINSELECTdnameINTOl_dnameFROMdeptWHEREdeptno=i_deptno;RETURNl_dname;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURN'错误!该编号的部门不存在!';ENDf_dept_getname_byno;ENDpkg_dept;程序包5-4执行程序包中的过程和函数:程序包5-5删除程序包:只删除程序包主体:DROPPACKAGEBODYpkg_dept;删除整个程序包(规范+主体):DROPPACKAGEpkg_dept;小结:程序包的优点使用程序包的优点:信息隐藏模块化对多态的支持性能更佳过程返回结果集2-1在Oracle中的过程不能象SQLSERVER那样直接返回结果集,而必须借助于REF游标程序包规范中的代码:CREATEORREPLACEPACKAGEpkg_deptASTYPEdeptcursorISREFCURSOR;PROCEDUREsp_dept_getall(dept_curOUTdeptcursor);ENDpkg_dept;过程返回结果集2-2程序包主体中的代码:执行过程:CREATEORREPLACEPACKAGEBODYpkg_deptASPROCEDUREsp_dept_getall(dept_curOUTdeptcursor)ISBEGINOPENdept_curFORSELECT*FROMdept;ENDsp_dept_getall;ENDpkg_dept;VARIABLEtest_curREFCURSOR;EXECUTEpkg_dept.sp_dept_getall(:test_cur);PRINTtest_cur;OEM中管理过程、函数、程序包请老师用浏览器打开OEM,演示在OEM中管理过程、函数、程序包 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf 过程和函数都是命名的PL/SQL程序块,合称子程序过程有三种参数模式:IN、OUT和INOUT过程用户执行特定的任务,函数用于执行任务并返回值过程与函数的相同点和不同点程序包是对过程、函数、变量、常量、游标、异常及PL/SQL数据类型等的封装程序包由两部分组成,即包规范和包主体使用程序包的优点过程的定义定义:过程是一组为了完成特定功能的、符合数据库程序脚本规范的程序,经编译后存储在数据库中,然后由一个应用程序或其他的PL/SQL程序调用。从根本上讲,过程就是命名的PL/SQL程序块。创建过程的语法CREATE[ORREPLACE]PROCEDUREprocedure_name[(parameter_list)]{AS|IS}[local_declarations]BEGINexecutable_statements[EXCEPTIONexception_handlers]END[procedure_name];执行过程在SQL提示符下:EXEC[UTE]procedure_name(parameters_list)在其它的过程、函数或匿名的PL/SQL块中的可执行语句部分执行过程,直接写过程的名称(如有参数需带上)即可删除过程删除过程的语法:DROPPROCEDUREprocedure_name;过程的参数模式Oracle中过程的参数模式有三种:IN、OUT和INOUT,即输入、输出和输入输出定义参数的语法:parameter_name[IN|OUT|INOUT]DATATYPE[{:=|DEFAULT}expression]IN模式参数IN模式是输入模式,可以传递输入参数IN模式是默认模式,如果未指定参数的模式,则该参数是IN模式的可以在参数列表中为IN参数赋予一个默认值OUT模式参数OUT模式是输出模式,可以传递输出参数OUT模式的参数,则必须明确指定,即OUT必须注明在返回到调用环境之前,应该先给OUT模式的参数赋值不能为OUT模式的参数赋默认值INOUT模式参数INOUT模式是一种比较特殊的模式,它兼有IN模式和OUT模式的特点INOUT模式的参数,则必须明确指定不能为INOUT模式的参数赋默认值函数的定义定义函数的实质也是数据库中已命名的PL/SQL程序块。它的主要特性是函数能且只能返回一个值。创建函数的语法CREATE[ORREPLACE]FUNCTIONfunction_name[(parameter_list)]RETURNDATATYPE{AS|IS}[local_declarations]BEGINexecutable_statements[EXCEPTIONexception_handlers]END[function_name];函数定义的要点创建函数时通过RETURN子句来定义函数的返回类型在函数体的任何地方用户都可以通过RETURNexpression语句从函数返回,但表达式的类型一定要与RETURN子句中定义的数据类型一致。函数的参数模式只能是IN模式的,而不能是OUT或INOUT模式的。调用函数在SQL提示符下:SELECTfunction_namefromdual;在其它的过程、函数或匿名的PL/SQL块中的可以用一个与函数的返回类型相同的变量来接收该函数不能用EXECUTE语句来调用函数删除函数删除函数的语法:DROPFUNCTIONfunction_name;程序包程序包是对过程、函数、变量、常量、游标、异常及PL/SQL数据类型等的封装,是一种数据库对象。它由两部分构成:程序包规范程序包主体创建程序包规范的语法创建程序包规范的语法CREATE[ORREPLACE]PACKAGEpackage_nameIS|AS[publictypeanditemdeclarations][subprogramspecifications]END[package_name];创建程序包主体的语法创建程序包主体的语法CREATE[ORREPLACE]PACKAGEBODYpackage_nameIS|AS[initialization_statements][subprogrambodies]END[package_name];程序包元素的引用公有项:在程序包规范中声明的元素,可以从其它的应用程序或PL/SQL块用点分表示法引用私有项:在程序包主体中定义的元素,并没有在程序包规范中出现过,只能在程序包主体内被使用,不能在程序包之外被引用点分表示法,即“程序包名称”+“.”+“元素名称”只删除程序包主体的语法:DROPPACKAGEBODYpackage_name;程序包主体和程序包规范全部删除的语法:DROPPACKAGEpackage_name;程序包的删除演讲完毕,谢谢观看!
本文档为【oracle存储过程、函数和程序包】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
言言无悔一生
暂无简介~
格式:ppt
大小:338KB
软件:PowerPoint
页数:50
分类:
上传时间:2022-01-21
浏览量:3