欢迎来到天天文库
浏览记录
ID:59472023
大小:201.50 KB
页数:74页
时间:2020-09-14
《存储过程和包ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、存储过程和包Oracle数据库应用技术1教学要求掌握过程,函数的概念掌握过程,函数的定义和使用掌握动态SQL的定义和使用掌握包的定义和使用2重点难点过程和函数的定义和使用(难点)动态SQL的定义和使用(难点)包的定义和使用(难点)3过程(存储过程)前面编写执行的PL/SQL程序,共同的特点是没有名称,只能存储为文件,然后通过执行文件的方式执行,因此称为无名块。与此对应的是在PL/SQL中也引入了高级程序设计的一些概念,其中最重要的就是过程。过程就是高级程序设计语言中的模块的概念,将一些内部联系的命令组
2、成一个个过程,通过参数在过程之间传递数据是模块化设计思想的重要内容。4过程的语法结构完整的过程结构如下:CREATEORREPLACEPROCEDURE过程名IS声明语句段;BEGIN执行语句段;EXCEPTION异常处理语句段;END;5过程的特点过程是有名称的程序块,is关键词代替了无名块的Declare。因此在过程中不能使用Declare子句6setserveroutputoncreateorreplaceproceduretempuser.tempprocedureistempdatetemp
3、user.testtable.currentdate%type;beginselectcurrentdateintotempdatefromtesttablewhererecordnumber=88;dbms_output.put_line(to_char(tempdate));end;创建过程实例7创建过程并不会直接输出结果,只是和创建其他数据库对象一样,是一个数据定义命令。创建过程实例8查询过程1.使用项目管理器登录【企业管理器】,在【管理目标导航树】里选择【数据库】/【ORA】/【方案】/【源类
4、型】/【过程】选项。2.使用SQL语句使用系统表查询:selecttextfromuser_sourcewherename=‘P1’9执行过程要执行创建的过程,必须通过主程序来调用过程。setserveroutputonbegintempprocedure;end;10带参数的过程前面介绍的过程没有参数,主程序和过程没有数据的传递,下面介绍带参数的过程的设计和使用。11在PL/SQL过程中,可以有3种类型的参数。in参数:读入参数,主程序向过程传递参数值。out参数:读出参数,过程向主程序传递参数值。
5、inout参数:双向参数,过程与主程序双向交流数据。参数类型12CREATEORREPLACEPROCEDUREshow_line(ip_line_lengthINNUMBER,ip_separatorINVARCHAR2)ISactual_lineVARCHAR2(150);BEGINFORidxin1..ip_line_lengthLOOPactual_line:=actual_line
6、
7、ip_separator;ENDLOOP;DBMS_OUTPUT.PUT_LINE(actual_line)
8、;EXCEPTIONWHENOTHERSTHENdbms_output.put_line(SQLERRM);END;带参数的过程13DECLAREv_lengthNUMBER:=50;v_separatorVARCHAR2(1):=‘*';BEGINshow_line(v_length,v_separator);END;使用带参数的过程14DECLAREv_lengthNUMBER:=50;v_separatorVARCHAR2(1):='=';BEGINshow_line(ip_line_lengt
9、h=>v_length,ip_separator=>v_separator);END;使用带参数的过程15函数的定义与过程的定义主要的不同就在于签名。函数的签名比过程的签名多了一个Return子句,该子句指定了函数的返回值的类型。定义函数时必须指定其返回类型函数的创建和使用16CREATEORREPLACEFUNCTIONf_line(ip_line_lengthINNUMBER,ip_separatorINVARCHAR2)RETURNVARCHAR2ISactual_lineVARCHAR2(15
10、0);BEGINFORidxin1..ip_line_lengthLOOPactual_line:=actual_line
11、
12、ip_separator;ENDLOOP;RETURN(actual_line);EXCEPTIONWHENOTHERSTHENdbms_output.put_line(SQLERRM);RETURN(null);END;17DECLAREv_lengthNUMBER:=50;v_separatorVARCHAR2(1):='='
此文档下载收益归作者所有