- 1、本文档共82页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机软件及应用]099第12章 应用程序结构
Oracle 数据库系统第12章 应用程序结构 本章要点 子程序 子程序: PL/SQL的过程和函数统称为子程序 匿名块: 以DECLARE或BEGIN开始,每次提交都被编译。匿名块不在数据库中存储并且不能直接从其他PL/SQL块中调用。 命名块:除匿名块之外的其他块。包括过程,函数,包和触发器。可以在数据库中存储并在适当的时候运行。 子程序的优点 具有可扩展性 可以自定义 PL/SQL 语言以满足应用程序的需要 提高可复用性和可维护性 子程序只要有效,就完全可以用于任何数目的应用程序中 简化了维护/优化过程,因为如果定义更改只有子程序受到影响 创建子程序 创建过程(语法如下) 创建过程 过程的结构应具有下面所示的特征: 创建过程 CREATE OR REPLACE PROCEDURE search_emp (p_empno IN NUMBER,p_ename OUT VARCHAR2(20), p_deptno OUT NUMBER) IS v_name VARCHAR2(20); v_deptno NUMBER; BEGIN SELECT ENAME,DEPTNO INTO v_name, v_deptno FROM EMP WHERE EMPNO= p_empno; p_ename := v_name ; p_deptno := v _deptno ; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(‘EMPNO:’|| p_empno||’NO EXIST’ ); END search_emp; 创建函数 函数与过程的比较: 两者都带有参数,参数可以具有模式。 两者都是PL/SQL语句块的不同形式,都有声明段、可执行段以及异常段。 两者都可以存储在数据库中或在语句块中声明 两者不同的是,过程调用本身是一个PL/SQL语句,而函数调用是作为表达式的一部分被调用的。 函数的语法 非常类似于创建过程的语法。其定义如下: RETURN语句 RETURN语句用来把控制返回到调用环境中。 删除过程和函数 删除操作是将过程或函数从数据字典中删除。 子程序参数 1、参数模式 2、在形参和实参之间传递数值 3、对形参的约束 4、子程序内部引发的异常 5、按引用和按值传递参数 6、使用NOCOPY参数 7、不带参数的子程序 8、定位符和命名符 9、参数缺省值 1、参数模式 过程和函数的参数可以有不同的模式,并可以按值或按引用进行传递。 2、在形参和实参之间传递数值 文字或常数作为实参 因为复制功能的使用,对应于参数IN OUT或OUT的实参必须是变量,而不能是常数或表达式。也就是说,程序必须提供返回的变量的存储位置。 编译检查 PL/SQL编译器在创建过程时将对合法的赋值进行检查。 从OUT参数读取数据 3、对形参的约束 调用过程时,实参的值将被传入该过程,这些实参在该过程内部以引用的方式使用形参。 同时,作为参数传递机制一部分,对变量的约束也传递给该过程。 在过程的声明中,强制指定参数CHAR和VARCHAR2的长度,以及指定NUMBER参数的精度或小数点后位数都是非法的,这是因为这些约束可以从实参中获得。 4、子程序内部引发的异常 如果错误发生在子程序的内部,就会引发异常。 该异常既可以是由用户定义的,也可以是程序中预定义的。 如果引发异常的过程中没有处理该错误的异常处理程序(或该异常发生在该异常处理程序的内部),根据异常的传播规则,控制将立即转出该过程返回其调用环境。然而,在这种情况下,OUT和IN OUT形参的值并没有返回到实参。这些实参仍将被设置为调用前的值。 5、按引用和按值传递参数 子程序参数可以按即按引用或按值传递。 按引用传递:一个指向实参的指针将被传递到对应的形参。 按值传递:实参的值将被赋予对应的形参。 6、使用NOCOPY参数 语法如下: 使用NOCOPY时的异常语义 使用NOCOPY的限制 在某些情况下,NOCOPY将被编译器忽略,这时的参数仍将按值传递。在这种情况下,编译器不会报告编译错误。由于NOCOPY是一个提示项(Hint),编译器可以决定是否执行该项。 使用NOCOPY的优点 NOCOPY的主要优点是可以提高程序的效率。当我们传递大型PL/SQL表时,其优越性特别显著。 按值传递IN OUT模式的参数所使用的时间远远大于按引用传递IN和IN OUT NOCOPY参数所使用的时间。 7、不带参数的子程序 如果过程没有参数的话,就不需要在该过程调用声明中或在其过程调用中使用括弧。函数也具有类似的情况。 函数与过程类似 。 8、定位符和命名符 实参都
您可能关注的文档
- [计算机]第6讲 链接1.ppt
- [计算机]第二章 Linux常用命令和基本管理.ppt
- [计算机]第五章 汇编语言程序开发.pdf
- [计算机]算法时间复杂度分析.doc
- [计算机]细说怎样做好淘宝直通车关键词优化.doc
- [计算机]维护计算机公共机房环境承诺书.doc
- [计算机]缓存详解.doc
- [计算机]编制计算机程序解决问题.doc
- [计算机]第二章操作系统.ppt
- [计算机]网站优化的12个主要原则.pdf
- 2025年山东日照山海天旅游度假区招聘乡村医生10人笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年山东泰安宁阳县事业单位初级综合类岗位招聘30人笔试高频难、易错点备考题库及答案详解1套.docx
- 2025年山东滨州市市属事业单位招聘60人笔试备考题库及完整答案详解1套.docx
- 2025年山东旅游职业学院招聘32人笔试备考题库及参考答案详解1套.docx
- 2025年山东日照市卫生学校招聘博士研究生笔试备考题库及参考答案详解一套.docx
- 2025年山东德州乐陵市教育系统引进优秀人才50人笔试备考题库及参考答案详解.docx
- 2025年山东枣庄峄城区事业单位招聘初级综合类岗位26人笔试高频难、易错点备考题库含答案详解.docx
- 2025年山东济南市口腔医院招聘卫生高级人才和博士(控制总量)17人笔试备考题库带答案详解.docx
- 2025年山东师范大学附属中学第二批招聘人员笔试备考题库含答案详解.docx
- 2025年山东济南市司法局所属济南市保宁学校招聘4人笔试高频难、易错点备考题库及参考答案详解1套.docx
文档评论(0)