- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
OracleDatabase10g基础教程 ch14 过程、函数和程序包
第14章 过程、函数和程序包 教学目标 理解和掌握过程、函数和程序包的基本概念和特点 理解在过程中使用输入和输出参数的特点 了解函数和过程的区别和联系 理解和掌握程序包的结构的特点 理解和掌握程序包的规范 教学难点和重点 过程、函数和程序包的基本概念和特点 在过程中使用输入和输出参数 函数和过程的区别和联系 程序包的结构 程序包的规范 教学过程 14.1 概述 14.2 过程 14.3 函数 14.4 程序包 14.1 概述 使用过程、函数和程序包代替PL/SQL程序块由许多好处,例如增强可扩展性、提高模块化水平、可重用性增强、可维护性加强、有利于抽象和数据隐藏、增强安全性等。 14.2 过程 从本质上来看,过程就是命名的PL/SQL程序块,它可以被赋予参数,存储在数据库中,然后由另外一个应用或PL/SQL例程调用。 下面,详细讲述过程的创建、执行、安全、使用参数等内容。 创建或替换 [create [or replace]] procedure procedure_name[(parameter[, parameter]…)] [authid {definer | current_schema}]{is | as} [pragma autonomous_transaction;] [local_declarations] begin executable statements [exception exception handlers] end [procedure_name]; 执行过程 过程创建之后,就可以执行了。用户既可以从匿名PL/SQL程序块中直接调用,也可以在SQL*Plus中使用execute函数来执行。 execute函数可以简写为exec。 使用参数 过程可以进行参数化处理。参数可以是任意合法的PL/SQL类型。参数可以有3种模式,即in、out和in out。 in参数是输入参数,需要通过调用者传入,只能由过程来读取。也就是说,他们是只读值。这是参数行为中最常使用的模式,是没有给出参数模式指示器时的默认模式。in参数可以具有默认值,因此调用者不一定必须为其提供指定值。 out参数是输出参数,能够由过程写入。该参数适合用于过程向调用者返回多个信息。out参数没有默认值,也不能是常量或表达式,必须向out参数传递返回值。 in out参数同时具有in参数和out参数的特性,过程可以读取和写入他们的值。 局域声明 如同匿名PL/SQL程序块一样,过程也可以定义局域变量。这些定义紧随可选的参数列表之后。在匿名PL/SQL程序块中,它使用declare保留字开始。在过程声明中,由于使用了create or replace语法,所以不必再使用declare保留字了。在前面的swap过程示例中,l_temp就是一个局域变量。 除了局域变量之外,在局域声明部分还可以定义其他许多内容。用户可以定义记录、类型、数组,甚至还可以是其他过程。 14.3 函数 函数与过程非常类似,也是数据库中存储的命名PL/SQL程序块。创建函数与创建过程,都遵循同样的规则。函数与过程的安全方式和参数传递也相同。函数的主要特征是它必须返回一个值。这个返回值既可以是number或varchar2这样简单的数据类型,也可以是PL/SQL数组或对象这样复杂的数据类型。 语法 [create [or replace]] function function_name [(parameter[, parameter]…)] return datatype [authid {definer | current_schema}] [parallel_enable] [deterministic] {is | as} [pipelined [using implementation_type]] [aggregate [update value] {with external context} using implementation_type] [pragma autonomous_transaction;] [local declarations] begin executable statements [exception exception handlers] end [name]; 返回值 定义过程和定义函数的主要区别之一是,定义函数必须使用return子句返回数据。在定义函数的函数体中的任何地方,用户都可以return expresson;子句。 注意,这里的expression表达式要等于return数据类型。 图14-25是一个创建函数的示例。 确定性 如果对于给定的输入,函数总是会返回完全相同的
您可能关注的文档
最近下载
- 管线保护方案.pdf VIP
- DB5101T 13-2018 成都市智慧城市市政设施 城市道路桥梁基础数据规范.pdf VIP
- 变电站一次设备、二次设备巡视要点.pptx VIP
- 养老机构医养结合服务规范.pdf VIP
- 第11课 “韩信点兵”筛选法的实现 课件 2025-2026学年六年级上册信息技术浙教版.pptx VIP
- 基于Python的五子棋游戏设计.docx VIP
- 《岳阳楼记》的文言虚词.doc VIP
- Python语言与经济大数据分析知到智慧树期末考试答案题库2025年上海财经大学.docx VIP
- 初中英语英语完形填空100篇(二)配答案详解.pdf VIP
- 电梯制造项目可行性研究报告(参考范文).docx
原创力文档


文档评论(0)