- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第17章函数与存储过程第1页,共19页,星期日,2025年,2月5日17.1自定义函数Oracle中的自定义函数实际是一组PL/SQL的语句的组合。函数的最大特征是必须返回值。通过自定义函数,用户可以极大扩展PL/SQL编程的应用。自定义函数创建之后,其调用方法也非常简单,因此,自定义函数也成为常见的用户操作之一。第2页,共19页,星期日,2025年,2月5日17.1.1创建自定义函数创建函数应该使用createorreplacefunction命令,其使用格式如下所示。createorreplacefunction函数名return返回值的类型asbegin函数定义end函数名;1.创建自定义函数2.在数据字典中查看自定义函数的信息3.调用自定义函数第3页,共19页,星期日,2025年,2月5日17.1.2函数的参数在示例17-1中所创建和使用的函数,均没有参数。但是对于自定义函数来说,带有参数的情形往往更加常见。当自定义函数带有参数时,只需在声明语句的函数名之后添加小括号,并在小括号内指定参数的数据类型和名称即可,其语法形式如下所示。createorreplacefunction函数名(数据类型1参数1,数据类型2参数2…)return返回值的类型asbegin函数定义end函数名;第4页,共19页,星期日,2025年,2月5日17.1.3利用函数的确定性提高数据库效率对于一个函数来说,其执行步骤和代码是固定不变的。有时,对于一个函数来说,只要传入的参数一定,那么返回值将不会发生任何改变,这样的函数被称为具有确定性的函数。对于函数,尤其是运算和操作步骤较为复杂的函数,每次为其传入参数,并最终返回运算结果,是较为费时的。而函数的确定性,在于可以根据函数名和参数来缓存执行结果。当再次利用相同的参数调用函数时,Oracle将直接获得缓存值,而不会执行函数的实际代码,从而提高工作效率。第5页,共19页,星期日,2025年,2月5日17.1.4典型函数——行转列在实际开发中,行转列是一个非常典型的应用。例如,在表employees中,存储了员工信息。我们可以利用一条SQL语句获得表中所有员工姓名,但要求在前台页面中作为一个字符串出现,并且员工的姓名之间使用逗号进行分隔,那么该问题即为行转列问题。对于该问题,我们可以创建一个函数,该函数接受一个单列查询语句,在函数内部,利用游标将查询语句获得的列值进行串联操作,最终返回串联之后的字符串。第6页,共19页,星期日,2025年,2月5日17.2存储过程存储过程和自定义函数非常相似,都是预定义的、可重用的PL/SQL代码。但是函数更倾向于处理数据运算,并最终返回处理结果;而存储过程则更倾向于数据库操作,并不返回值。本小节通过示例讲述存储过程的创建和使用。第7页,共19页,星期日,2025年,2月5日17.2.1创建存储过程创建存储过程应该使用createorreplaceprocedure命令,其格式为,createorreplaceprocedure存储过程名称asbegin存储过程定义end存储过程名称;其中,存储过程定义是一组PL/SQL代码。1.创建存储过程2.查看存储过程信息3.执行存储过程第8页,共19页,星期日,2025年,2月5日17.2.2“只进不出的参数”——in参数与函数相比,存储过程真正的复杂之处在于参数。存储过程的参数包括三种:in参数、out参数和inout参数。本小节将讲述in参数的使用。in参数,顾名思义,就是“只进不出”的参数。这里的“进”是指,向存储过程传递参数;“出”是指,获得存储过程内部处理的值。也就是说,一旦某个参数被声明为in参数,那么该参数值可以在存储过程内部被访问,但是并不能被修改。第9页,共19页,星期日,2025年,2月5日17.2.3“只出不进的参数”——out参数从没有返回值的角度来看,存储过程似乎并不如函数强大。其实不然,存储过程同样可以通过out参数将内部的处理结果传递给外部调用程序。与in参数相反,out参数是只出不进的参数。第10页,共19页,星期日,2025年,2月5日17.2.4“可进可出的参数”——inout参数in参数和out参数实际具有单向性,即要么用于传入参数值,要么用于输出存储过程的运算结果。除此之外,存储过程还可以使用inout参数。inout参数既可以作为输入也可以作为输出。【示例17-11】inout参数的一个典型应用场景为交换两个变量的值。SQLcreateorreplac
您可能关注的文档
最近下载
- 2025年华医网【护理专业题库】- 健康中国背景下的康复护理人工智能新进展.docx VIP
- DB32T-县级(区域)医疗资源集中化运行规范 第6部分:健康随访中心及编制说明.pdf VIP
- 吉林省吉林市昌邑区2023-2024学年四年级上学期数学12月期末试卷.docx VIP
- GB 14784-2013 带式输送机 安全规范.docx VIP
- 安全生产治本攻坚三年行动方案(2024-2026年)解读.pptx VIP
- 2025年大学试题(医学)-中医各家学说笔试考试历年典型考题及考点含含答案.docx
- 劳动合同标准版劳动合同劳动合同.doc VIP
- 【初高中】【期中通用】家长会:5天的努力,2天归零 课件 (共19张PPT).pptx VIP
- 基于MATLAB光伏储能并网的直流微电网系统的研究与设计.doc VIP
- SIEMENS西门子MM430变频器操作说明书.pdf
原创力文档


文档评论(0)