版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
19十二月2022oracle存储过程函数和程序包12十二月2022oracle存储过程函数和程序包1回顾游标就是指向上下文区的句柄或指针。游标有两种类型:显式游标、隐式游标。四个游标属性:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT、SQL%ISOPEN显式游标的使用步骤:4个记录变量和%ROWTYPE带参数的游标游标FOR循环(循环游标)游标中的更新和删除REF游标oracle存储过程函数和程序包回顾游标就是指向上下文区的句柄或指针。oracle存储过程函2教学目标掌握过程的用法掌握函数的用法理解过程与函数的相同点和不同点理解程序包的概念并能熟练应用oracle存储过程函数和程序包教学目标掌握过程的用法oracle存储过程函数和程序包3工作任务
用无参过程实现“HelloWorld!”程序用带输入参数的过程向表中插入记录用带输出参数的过程查询表中的记录数使用带输入输出参数的过程查询记录是否存在使用函数查询部门信息使用程序包封装过程和函数oracle存储过程函数和程序包工作任务用无参过程实现“HelloWorld!”程序or4相关实践知识从开始菜单中打开SQL*Plus工具,以SCOTT用户的身份登录到数据库
oracle存储过程函数和程序包相关实践知识从开始菜单中打开SQL*Plus工具,以SCOT5不带参数的过程2-1输入以下代码,创建一个最简单的过程功能:显示”HelloWorld!”CREATEORREPLACEPROCEDUREsp_helloWorldASBEGIN DBMS_OUTPUT.PUT_LINE('HelloWorld!');ENDsp_helloWorld;oracle存储过程函数和程序包不带参数的过程2-1输入以下代码,创建一个最简单的过程CR6不带参数的过程2-2执行过程EXECUTEsp_helloWorld;执行结果:删除过程DROPPROCEDUREsp_helloWorld;oracle存储过程函数和程序包不带参数的过程2-2执行过程oracle存储过程函数和程序包7带输入参数的过程3-1实现的功能:向表dept中插入一条记录创建带输入参数的过程,代码为:oracle存储过程函数和程序包带输入参数的过程3-1实现的功能:向表dept中插入一条记录8带输入参数的过程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;oracle存储过程函数和程序包带输入参数的过程3-2CREATEORREPLACEP9带输入参数的过程3-3分别输入两组数据来执行过程,结果如下:oracle存储过程函数和程序包带输入参数的过程3-3分别输入两组数据来执行过程,结果如下10带输出参数的过程3-1实现功能:通过输出参数count来得到dept表中的记录数创建带输出参数的过程CREATEORREPLACEPROCEDUREsp_getcount(o_countOUTNUMBER)ASBEGIN SELECTCOUNT(*)INTOo_countFROMdept;ENDsp_getcount;oracle存储过程函数和程序包带输出参数的过程3-1实现功能:通过输出参数count来得到11带输出参数的过程3-2编写一段匿名的PL/SQL块来执行过程DECLARE cntNUMBER;BEGIN sp_getcount(cnt); DBMS_OUTPUT.PUT_LINE('dept表中的记录数为:'||cnt);END;oracle存储过程函数和程序包带输出参数的过程3-2编写一段匿名的PL/SQL块来执行过程12带输出参数的过程3-3输出结果:oracle存储过程函数和程序包带输出参数的过程3-3输出结果:oracle存储过程函数和程13带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;oracle存储过程函数和程序包带INOUT参数的过程2-1实现功能:查询某个部门名称在表14带INOUT参数的过程2-2执行过程:输出结果:部门名称ACCOUNTING存在!DECLAREl_iotestvarchar2(20):='ACCOUNTING';BEGINsp_dept_dname_exist(l_iotest);DBMS_OUTPUT.PUT_LINE('部门名称ACCOUNTING'||l_iotest||'!');END;oracle存储过程函数和程序包带INOUT参数的过程2-2执行过程:DECLAREora15函数4-1实现功能:按部门编号查询出表dept中的部门名称创建一个函数,代码为:oracle存储过程函数和程序包函数4-1实现功能:oracle存储过程函数和程序包16函数4-2CREATEORREPLACEFUNCTIONf_dept_getname_byno(i_deptnoNUMBER)RETURNVARCHAR2ASl_dnameVARCHAR2(14);BEGINSELECTdnameINTOl_dnameFROMdeptWHEREdeptno=i_deptno;RETURNl_dname;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURN'错误!该编号的部门不存在!';ENDf_dept_getname_byno;oracle存储过程函数和程序包函数4-2CREATEORREPLACEFUNCTIO17函数4-3函数的调用及其输出结果:oracle存储过程函数和程序包函数4-3函数的调用及其输出结果:oracle存储过程函数18函数4-4删除函数DROPFUNCTIONf_dept_getname_byno
oracle存储过程函数和程序包函数4-4oracle存储过程函数和程序包19过程与函数小结2-1共同点:两者的实质都是已命名的PL/SQL程序块,即子程序,它们是子程序的两种类型,存储在数据库中,可以从任何数据库客户端和前台应用程序中调用它们。oracle存储过程函数和程序包过程与函数小结2-1oracle存储过程函数和程序包20过程与函数小结2-2不同点:过程函数参数模式可以是IN、OUT或INOUT参数模式只能是IN模式在语法规范中不包含RETURN子句在语法规范中必须包含RETURN子句在可执行语句部分可以有RETURN语句,但其后不能加任何表达式在可执行语句部分至少应该包含一条RETURNexpression语句可以用EXECUTE语句来执行不能用EXECUTE语句来执行oracle存储过程函数和程序包过程与函数小结2-2不同点:过程函数参数模式可以是IN、O21程序包5-1利用程序包封装过程sp_dept_insert和函数f_dept_getname_byno程序包规范部分的代码:CREATEORREPLACEPACKAGEpkg_deptAS PROCEDUREsp_dept_insert (i_deptnoNUMBER,i_dnameVARCHAR2,i_locVARCHAR2); FUNCTIONf_dept_getname_byno(i_deptnoNUMBER) RETURNVARCHAR2;ENDpkg_dept;oracle存储过程函数和程序包程序包5-1利用程序包封装过程sp_dept_insert和22程序包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;oracle存储过程函数和程序包程序包5-2程序包主体部分的代码CREATEORREP23程序包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;
oracle存储过程函数和程序包程序包5-3--函数f_num_rangeoracle24程序包5-4执行程序包中的过程和函数:oracle存储过程函数和程序包程序包5-4执行程序包中的过程和函数:oracle存储过程函25程序包5-5删除程序包:只删除程序包主体:DROPPACKAGEBODYpkg_dept;删除整个程序包(规范+主体):DROPPACKAGEpkg_dept;oracle存储过程函数和程序包程序包5-5删除程序包:oracle存储过程函数和程序包26小结:程序包的优点使用程序包的优点:信息隐藏模块化对多态的支持性能更佳oracle存储过程函数和程序包小结:程序包的优点使用程序包的优点:oracle存储过程函数27过程返回结果集2-1在Oracle中的过程不能象SQLSERVER那样直接返回结果集,而必须借助于REF游标程序包规范中的代码:CREATEORREPLACEPACKAGEpkg_deptAS
TYPEdeptcursorISREFCURSOR;PROCEDUREsp_dept_getall(dept_curOUTdeptcursor);ENDpkg_dept;oracle存储过程函数和程序包过程返回结果集2-1在Oracle中的过程不能象SQLSE28过程返回结果集2-2程序包主体中的代码:执行过程:CREATEORREPLACEPACKAGEBODYpkg_deptASPROCEDUREsp_dept_getall(dept_curOUTdeptcursor)ISBEGIN
OPENdept_curFORSELECT*FROMdept;ENDsp_dept_getall;ENDpkg_dept;VARIABLEtest_curREFCURSOR;EXECUTEpkg_dept.sp_dept_getall(:test_cur);PRINTtest_cur;oracle存储过程函数和程序包过程返回结果集2-2程序包主体中的代码:CREATEOR29OEM中管理过程、函数、程序包请老师用浏览器打开OEM,演示在OEM中管理过程、函数、程序包oracle存储过程函数和程序包OEM中管理过程、函数、程序包请老师用浏览器打开OEM,演示30总结过程和函数都是命名的PL/SQL程序块,合称子程序过程有三种参数模式:IN、OUT和INOUT过程用户执行特定的任务,函数用于执行任务并返回值过程与函数的相同点和不同点程序包是对过程、函数、变量、常量、游标、异常及PL/SQL数据类型等的封装程序包由两部分组成,即包规范和包主体使用程序包的优点oracle存储过程函数和程序包总结过程和函数都是命名的PL/SQL程序块,合称子程序ora31过程的定义定义:过程是一组为了完成特定功能的、符合数据库程序脚本规范的程序,经编译后存储在数据库中,然后由一个应用程序或其他的PL/SQL程序调用。从根本上讲,过程就是命名的PL/SQL程序块。oracle存储过程函数和程序包过程的定义定义:oracle存储过程函数和程序包32创建过程的语法CREATE[ORREPLACE]PROCEDUREprocedure_name[(parameter_list)] {AS|IS} [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers]END[procedure_name];oracle存储过程函数和程序包创建过程的语法oracle存储过程函数和程序包33执行过程在SQL提示符下:EXEC[UTE]procedure_name(parameters_list)在其它的过程、函数或匿名的PL/SQL块中的可执行语句部分执行过程,直接写过程的名称(如有参数需带上)即可oracle存储过程函数和程序包执行过程在SQL提示符下:oracle存储过程函数和程序包34删除过程删除过程的语法:
DROPPROCEDUREprocedure_name;oracle存储过程函数和程序包删除过程删除过程的语法:oracle存储过程函数和程序包35过程的参数模式Oracle中过程的参数模式有三种:IN、OUT和INOUT,即输入、输出和输入输出定义参数的语法:parameter_name[IN|OUT|INOUT]DATATYPE[{:=|DEFAULT}expression]oracle存储过程函数和程序包过程的参数模式Oracle中过程的参数模式有三种:IN、O36IN模式参数IN模式是输入模式,可以传递输入参数IN模式是默认模式,如果未指定参数的模式,则该参数是IN模式的可以在参数列表中为IN参数赋予一个默认值oracle存储过程函数和程序包IN模式参数IN模式是输入模式,可以传递输入参数oracle37OUT模式参数OUT模式是输出模式,可以传递输出参数OUT模式的参数,则必须明确指定,即OUT必须注明在返回到调用环境之前,应该先给OUT模式的参数赋值不能为OUT模式的参数赋默认值oracle存储过程函数和程序包OUT模式参数OUT模式是输出模式,可以传递输出参数ora38INOUT模式参数INOUT模式是一种比较特殊的模式,它兼有IN模式和OUT模式的特点INOUT模式的参数,则必须明确指定不能为INOUT模式的参数赋默认值oracle存储过程函数和程序包INOUT模式参数INOUT模式是一种比较特殊的模式,它39函数的定义定义函数的实质也是数据库中已命名的PL/SQL程序块。它的主要特性是函数能且只能返回一个值。oracle存储过程函数和程序包函数的定义定义oracle存储过程函数和程序包40创建函数的语法CREATE[ORREPLACE]FUNCTIONfunction_name[(parameter_list)]RETURNDATATYPE {AS|IS} [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers] END[function_name];oracle存储过程函数和程序包创建函数的语法CREATE[ORREPLACE]FUN41函数定义的要点创建函数时通过RETURN子句来定义函数的返回类型在函数体的任何地方用户都可以通过RETURNexpression语句从函数返回,但表达式的类型一定要与RETURN子句中定义的数据类型一致。函数的参数模式只能是IN模式的,而不能是OUT或INOUT模式的。oracle存储过程函数和程序包函数定义的要点创建函数时通过RETURN子句来定义函数的返回42调用函数在SQL提示符下:SELECTfunction_namefromdual;在其它的过程、函数或匿名的PL/SQL块中的可以用一个与函数的返回类型相同的变量来接收该函数不能用EXECUTE语句来调用函数oracle存储过程函数和程序包调用函数在SQL提示符下:oracle存储过程函数和程序包43删除函数删除函数的语法:DROPFUNCTIONfunction_name;oracle存储过程函数和程序包删除函数oracle存储过程函数和程序包44程序包程序包是对过程、函数、变量、常量、游标、异常及PL/SQL数据类型等的封装,是一种数据库对象。它由两部分构成:程序包规范程序包主体oracle存储过程函数和程序包程序包程序包是对过程、函数、变量、常量、游标、异常及PL/S45创建程序包规范的语法创建程序包规范的语法CREATE[ORREPLACE]PACKAGEpackage_nameIS|AS[publictypeanditemdeclarations][subprogramspecifications]END[package_name];oracle存储过程函数和程序包创建程序包规范的语法创建程序包规范的语法oracle存储过46创建程序包主体的语法创建程序包主体的语法CREATE[ORREPLACE]PACKAGEBODYpackage_nameIS|AS[initialization_statements][subprogrambodies]END[package_name];oracle存储过程函数和程序包创建程序包主体的语法创建程序包主体的语法oracle存储过程47程序包元素的引用公有项:在程序包规范中声明的元素,可以从其它的应用程序或PL/SQL块用点分表示法引用私有项:在程序包主体中定义的元素,并没有在程序包规范中出现过,只能在程序包主体内被使用,不能在程序包之外被引用点分表示法,即“程序包名称”+“.”+“元素名称”
oracle存储过程函数和程序包程序包元素的引用公有项:在程序包规范中声明的元素,可以从其它4819十二月2022oracle存储过程函数和程序包12十二月2022oracle存储过程函数和程序包49回顾游标就是指向上下文区的句柄或指针。游标有两种类型:显式游标、隐式游标。四个游标属性:SQL%FOUND、SQL%NOTFOUND、SQL%ROWCOUNT、SQL%ISOPEN显式游标的使用步骤:4个记录变量和%ROWTYPE带参数的游标游标FOR循环(循环游标)游标中的更新和删除REF游标oracle存储过程函数和程序包回顾游标就是指向上下文区的句柄或指针。oracle存储过程函50教学目标掌握过程的用法掌握函数的用法理解过程与函数的相同点和不同点理解程序包的概念并能熟练应用oracle存储过程函数和程序包教学目标掌握过程的用法oracle存储过程函数和程序包51工作任务
用无参过程实现“HelloWorld!”程序用带输入参数的过程向表中插入记录用带输出参数的过程查询表中的记录数使用带输入输出参数的过程查询记录是否存在使用函数查询部门信息使用程序包封装过程和函数oracle存储过程函数和程序包工作任务用无参过程实现“HelloWorld!”程序or52相关实践知识从开始菜单中打开SQL*Plus工具,以SCOTT用户的身份登录到数据库
oracle存储过程函数和程序包相关实践知识从开始菜单中打开SQL*Plus工具,以SCOT53不带参数的过程2-1输入以下代码,创建一个最简单的过程功能:显示”HelloWorld!”CREATEORREPLACEPROCEDUREsp_helloWorldASBEGIN DBMS_OUTPUT.PUT_LINE('HelloWorld!');ENDsp_helloWorld;oracle存储过程函数和程序包不带参数的过程2-1输入以下代码,创建一个最简单的过程CR54不带参数的过程2-2执行过程EXECUTEsp_helloWorld;执行结果:删除过程DROPPROCEDUREsp_helloWorld;oracle存储过程函数和程序包不带参数的过程2-2执行过程oracle存储过程函数和程序包55带输入参数的过程3-1实现的功能:向表dept中插入一条记录创建带输入参数的过程,代码为:oracle存储过程函数和程序包带输入参数的过程3-1实现的功能:向表dept中插入一条记录56带输入参数的过程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;oracle存储过程函数和程序包带输入参数的过程3-2CREATEORREPLACEP57带输入参数的过程3-3分别输入两组数据来执行过程,结果如下:oracle存储过程函数和程序包带输入参数的过程3-3分别输入两组数据来执行过程,结果如下58带输出参数的过程3-1实现功能:通过输出参数count来得到dept表中的记录数创建带输出参数的过程CREATEORREPLACEPROCEDUREsp_getcount(o_countOUTNUMBER)ASBEGIN SELECTCOUNT(*)INTOo_countFROMdept;ENDsp_getcount;oracle存储过程函数和程序包带输出参数的过程3-1实现功能:通过输出参数count来得到59带输出参数的过程3-2编写一段匿名的PL/SQL块来执行过程DECLARE cntNUMBER;BEGIN sp_getcount(cnt); DBMS_OUTPUT.PUT_LINE('dept表中的记录数为:'||cnt);END;oracle存储过程函数和程序包带输出参数的过程3-2编写一段匿名的PL/SQL块来执行过程60带输出参数的过程3-3输出结果:oracle存储过程函数和程序包带输出参数的过程3-3输出结果:oracle存储过程函数和程61带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;oracle存储过程函数和程序包带INOUT参数的过程2-1实现功能:查询某个部门名称在表62带INOUT参数的过程2-2执行过程:输出结果:部门名称ACCOUNTING存在!DECLAREl_iotestvarchar2(20):='ACCOUNTING';BEGINsp_dept_dname_exist(l_iotest);DBMS_OUTPUT.PUT_LINE('部门名称ACCOUNTING'||l_iotest||'!');END;oracle存储过程函数和程序包带INOUT参数的过程2-2执行过程:DECLAREora63函数4-1实现功能:按部门编号查询出表dept中的部门名称创建一个函数,代码为:oracle存储过程函数和程序包函数4-1实现功能:oracle存储过程函数和程序包64函数4-2CREATEORREPLACEFUNCTIONf_dept_getname_byno(i_deptnoNUMBER)RETURNVARCHAR2ASl_dnameVARCHAR2(14);BEGINSELECTdnameINTOl_dnameFROMdeptWHEREdeptno=i_deptno;RETURNl_dname;EXCEPTIONWHENNO_DATA_FOUNDTHENRETURN'错误!该编号的部门不存在!';ENDf_dept_getname_byno;oracle存储过程函数和程序包函数4-2CREATEORREPLACEFUNCTIO65函数4-3函数的调用及其输出结果:oracle存储过程函数和程序包函数4-3函数的调用及其输出结果:oracle存储过程函数66函数4-4删除函数DROPFUNCTIONf_dept_getname_byno
oracle存储过程函数和程序包函数4-4oracle存储过程函数和程序包67过程与函数小结2-1共同点:两者的实质都是已命名的PL/SQL程序块,即子程序,它们是子程序的两种类型,存储在数据库中,可以从任何数据库客户端和前台应用程序中调用它们。oracle存储过程函数和程序包过程与函数小结2-1oracle存储过程函数和程序包68过程与函数小结2-2不同点:过程函数参数模式可以是IN、OUT或INOUT参数模式只能是IN模式在语法规范中不包含RETURN子句在语法规范中必须包含RETURN子句在可执行语句部分可以有RETURN语句,但其后不能加任何表达式在可执行语句部分至少应该包含一条RETURNexpression语句可以用EXECUTE语句来执行不能用EXECUTE语句来执行oracle存储过程函数和程序包过程与函数小结2-2不同点:过程函数参数模式可以是IN、O69程序包5-1利用程序包封装过程sp_dept_insert和函数f_dept_getname_byno程序包规范部分的代码:CREATEORREPLACEPACKAGEpkg_deptAS PROCEDUREsp_dept_insert (i_deptnoNUMBER,i_dnameVARCHAR2,i_locVARCHAR2); FUNCTIONf_dept_getname_byno(i_deptnoNUMBER) RETURNVARCHAR2;ENDpkg_dept;oracle存储过程函数和程序包程序包5-1利用程序包封装过程sp_dept_insert和70程序包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;oracle存储过程函数和程序包程序包5-2程序包主体部分的代码CREATEORREP71程序包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;
oracle存储过程函数和程序包程序包5-3--函数f_num_rangeoracle72程序包5-4执行程序包中的过程和函数:oracle存储过程函数和程序包程序包5-4执行程序包中的过程和函数:oracle存储过程函73程序包5-5删除程序包:只删除程序包主体:DROPPACKAGEBODYpkg_dept;删除整个程序包(规范+主体):DROPPACKAGEpkg_dept;oracle存储过程函数和程序包程序包5-5删除程序包:oracle存储过程函数和程序包74小结:程序包的优点使用程序包的优点:信息隐藏模块化对多态的支持性能更佳oracle存储过程函数和程序包小结:程序包的优点使用程序包的优点:oracle存储过程函数75过程返回结果集2-1在Oracle中的过程不能象SQLSERVER那样直接返回结果集,而必须借助于REF游标程序包规范中的代码:CREATEORREPLACEPACKAGEpkg_deptAS
TYPEdeptcursorISREFCURSOR;PROCEDUREsp_dept_getall(dept_curOUTdeptcursor);ENDpkg_dept;oracle存储过程函数和程序包过程返回结果集2-1在Oracle中的过程不能象SQLSE76过程返回结果集2-2程序包主体中的代码:执行过程:CREATEORREPLACEPACKAGEBODYpkg_deptASPROCEDUREsp_dept_getall(dept_curOUTdeptcursor)ISBEGIN
OPENdept_curFORSELECT*FROMdept;ENDsp_dept_getall;ENDpkg_dept;VARIABLEtest_curREFCURSOR;EXECUTEpkg_dept.sp_dept_getall(:test_cur);PRINTtest_cur;oracle存储过程函数和程序包过程返回结果集2-2程序包主体中的代码:CREATEOR77OEM中管理过程、函数、程序包请老师用浏览器打开OEM,演示在OEM中管理过程、函数、程序包oracle存储过程函数和程序包OEM中管理过程、函数、程序包请老师用浏览器打开OEM,演示78总结过程和函数都是命名的PL/SQL程序块,合称子程序过程有三种参数模式:IN、OUT和INOUT过程用户执行特定的任务,函数用于执行任务并返回值过程与函数的相同点和不同点程序包是对过程、函数、变量、常量、游标、异常及PL/SQL数据类型等的封装程序包由两部分组成,即包规范和包主体使用程序包的优点oracle存储过程函数和程序包总结过程和函数都是命名的PL/SQL程序块,合称子程序ora79过程的定义定义:过程是一组为了完成特定功能的、符合数据库程序脚本规范的程序,经编译后存储在数据库中,然后由一个应用程序或其他的PL/SQL程序调用。从根本上讲,过程就是命名的PL/SQL程序块。oracle存储过程函数和程序包过程的定义定义:oracle存储过程函数和程序包80创建过程的语法CREATE[ORREPLACE]PROCEDUREprocedure_name[(parameter_list)] {AS|IS} [local_declarations] BEGIN executable_statements [EXCEPTION exception_handlers]END[procedure_name];oracle存储过程函数和程序包创建过程的语法oracle存储过程函数和程序包81执行过程在SQL提示符下:EXEC[UTE]procedure_name(parameters_list)在其它的过程、函数或匿名的PL/SQL块中的可执行语句部分执行过程,直接写过程的名称(如有参数需带上)即可oracle存储过程函数和程序包执行过程在SQL提示符下:oracle存储过程函数和程序包82删除过程删除过程的语法:
DROPPROCEDUREprocedure_name;oracle存储过程函数和程序包删除过程删除过程的语法:oracle存储过程函数和程序包83过程的参数模式Oracle中过程的参数模式有三种:IN、OUT和INOUT,即输入、输出和输入输出定义参数的语法:parameter_name[IN|OUT|INOUT]DATATYPE[{:=|DEFAULT}expression]oracle存储过程函数和程序包过程的参数模式Oracle中过程的参数模式有三种:IN、O84IN模式参数IN模式是输入模式,可以传递输入参数IN模式是默认模式,如果未指定参数的模式,则该参数是IN模式的可以在参数列表中为IN参数赋予一个默认值oracle存储过程函数和程序包IN模式参数IN模式是输入模式,可以传递输入参数oracle85OUT模式参数OUT模式是输出模式,可以传递输出参数OUT模式的参数,则必须明确指定,即OUT必须注明在返回到调用环境之前,应该先
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年城区街道广告招牌题库
- 2026年国企社会招聘性格测试题及答案
- 2026年拖拉机科目一仿真考试题
- 2026年历史事件脉络与知识要点
- 2026年网格化服务管理资源整合知识题库
- 2026年医院医保政策执行情况考核办法
- 2026年基层干部退役军人服务保障政策测试题库
- 2026年互联网金融风险防控知识考核题库
- 2026年现代企业管理理论与实践应用考试题
- 2025年珠海市金湾区总工会招聘工会社会工作者考试试卷真题
- 2025江苏扬州市高邮市城市建设投资集团有限公司招聘拟聘用人员笔试历年参考题库附带答案详解
- 2026年上海安全员c证考试试题及答案
- 易制毒单位内部安全制度
- 2025年运城市人民医院招聘笔试真题
- (二模)石家庄市2026届普通高中高三毕业年级教学质量检测(二)数学试卷(含答案详解)
- 2026年西部计划志愿者招募考试题及答案
- √高考英语688高频词21天背诵计划-词义-音标-速记
- 2026高校毕业论文答辩模板
- 八年级劳动教育考试试题及答案
- 国家事业单位招聘2023中国艺术研究院招聘22人笔试历年参考题库典型考点附带答案详解
- 2026年医疗器械专业知识培训试题及答案
评论
0/150
提交评论