20201208邹瑞

总结

子程序

子程序是已经命名的PL/SQL块,他们预编译后存储在数据库中,可以随时从任何数据库客户端和应用 程序中调用它们。命名的PL/SQL程序包括过程和函数。程序可以通过过程名和函数名对他们进行调 用,相当于Java中的方法,过程相当于就是没有返回值的方法。函数相当于有返回值的方法,过程和函 数都可以有自身的参数,在调用时为其传值。

相对以前学习过的PL/SQL块就是匿名PL/SQL块,子程序与匿名PL/SQL块一样,具有声明部分、可执行 部分、异常处理部分。声明部分包含类型、游标、常量、变量、异常的声明,这些声明项都是局部的, 在子程序运行结束将不复存在。可执行部分包括变量操作、流程控制操作、Oracle SQL的语句执行操 作,以及其他子程序的调用。异常处理部分包含异常处理程序,负责处理子程序运行中可执行部分出现 的异常。

子程序除了拥有PL/SQL块的优点外,还有:

  1. 模块化:子程序将程序分解为明确的,可管理的逻辑模块。程序包可以将若干个子程序放入同一个 包中,统一管理。
  2. 可重用性:子程序在创建并执行后,保存在服务器上,其他子程序或者客户端可以轻松的进行调 用。
  3. 安全性:用户可以设置权限,使得访问数据的唯一方式就是子程序,子程序是数据库对象,用户可 以为子程序授予适当的权限控制,限制用户对子程序的调用。这不仅可以让数据安全,而且还能保 证数据正确。

过程

过程是执行一系列PL/SQL操作的子程序,从根本上讲,过程就是命名的PL/SQL程序库,他可以拥有参 数,过程编译后存储在数据库中,然后由应用程序或者其他的PL/SQL块调用。创建过程的语法是

CREATE [OR REPLACE] PROCEDURE 过程名[(参数名 in/out 数据类型)]

{IS|AS}

​ --声明部分

BEGIN

​ --可执行部分

[EXCEPTION]

​ --异常处理部分

END [过程名];

  1. OR REPLACE 是可选的,表示如果当前用户下已经有同名的过程名,则覆盖旧的过程。过程名后 面括号中是过程的参数,过程的参数可有可无,如果过程存在参数,参数列表必须有小括号括起 来。如果过程没有参数,不能有小括号。
  2. IS或AS标志着PL/SQL块开始,IS和AS是等价的。在过程中没有关键字DECLARE。
  3. 如果过程中需要本地变量、常量等声明部分,可以在这里声明,方法与PL/SQL块中声明变量的方 法相同。
  4. 为了便于阅读交流和良好的编程风格,建议在END后面加上过程名

不带参数的过程

示例:EMP表中员工 ALLEN 在入职时劳动合同条款是每半年工资提升5%。为调用方便,请编写过程实 现该操作。

带参数的过程

示例:根据员工编号和工资增长率输出员工的工资。

过程的参数模式

调用程序是通过参数向过程传值的,过程中的形参接收调用者传递过来的参数,并且在过程中可以使 用。默认情况下,过程中的参数在过程中只能使用,不能对参数重新赋值。过程中参数传递共有三种模 式:分别是IN、OUT和IN OUT。参数的具体语法是:

参数名称 [IN|OUT|IN OUT] 数据类型

  1. IN:默认模式,表示参数只能由外界输入,不能在过程中对IN参数重新赋值。该参数可以有默认 值。
  2. OUT:该参数不能有默认值,该参数不能接收数据,在过程中对OUT参数进行赋值后,该值可以 被调用者捕获,调用者调用时对OUT参数只能使用变量作为参数,不能使用常量。
  3. IN OUT:该参数在过程中可以接收数据,也可以对参数赋值,赋值后的参数可以被调用者捕获, 调用者调用时对参数只能使用变量作为参数,不能使用常量。参数不能包含默认值。

默认参数

在参数定义同时用DEFAULT(或者赋值运算符)直接对参数进行初始化,即参数的默认值,当调 用者没有对该参数传值时,过程中就使用参数默认值。一个过程中可以有若干个默认值参数,但是 默认值参数只能放在参数列表的最后。

标签

评论

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1