第16章自定义函数与存储过程?在 Oracle 数据库中,可以将一些固定的操作集中起来由 Oracle 数据库服务器来完成,以实现某个任务,这种方法就是存储过程。用户自定义函数与存储过程相似,只能返回单一值或表。自定义函数和存储过程。可以被方便地调用执行,从而在很大程度上实现了 PL/SQL 代码的复用。本章主要讲解 Oracle 中的自定义函数、 Oracle 中的存储过程、包装函数与存储过程——程序包。 使用自定义函数?函数是由一个或者多个 PL/SQL 的语句组成的子程序, 可用于封装代码以便重新使用。 Oracle 中允许用户创建自己的用户定义函数。函数一般用于计算和返回一个值。 创建自定义函数?函数主要有以下部分组成。?输入部分,函数允许有输入参数,当有输入参数时, 调用函数应该为这些参数赋值。?输出部分,函数需要有输出数据,也就是返回值。?函数体,函数中可以进行算术表达式运算,也允许调用 SQL 内置函数或其他自定义函数。 创建自定义函数?创建函数应该使用 create or replace function 命令,其使用格式如下所示。? create or replace function 函数名 return 返回值的类型 as ? begin ?函数定义? end 函数名; ?其中, create or replace 遵循了 Oracle 中创建对象的一般语法; function 指定所创建的对象为函数; return 则指定返回值的类型; as引起函数的定义;函数的定义应该使用 begin end 块来实现。 创建自定义函数?1. 创建自定义函数?【示例 16-1 】我们尝试创建一个最简单的函数 getEmCount ,该函数返回表 employeenew 中的记录数目。 创建自定义函数?2. 在数据字典中查看自定义函数的信息?当自定义函数创建之后,可以在数据字典中获得相应信息。与之相关的视图主要有两个: user_objects 与 user_source 。?【示例 16-2 】下面在数据字典中查看自定义函数的信息。 创建自定义函数?3. 调用自定义函数?在 PL/SQL 环境中可以利用函数名+括号的形式,来直接调用函数,如同函数是一个全局变量。?【示例 16-3 】在 PL/SQL 环境中调用函数 getEmCount 。 使用函数的参数?在示例 16-1 中所创建和使用的函数,没有参数。 Oracle 中的函数允许带有输入类型参数、输出类型参数、输入输出类型参数。当自定义函数带有参数时,只需在声明语句的函数名之后添加小括号,并在小括号内指定参数的数据类型和名称即可,其语法形式如下所示。 使用函数的参数? create or replace function 函数名(数据类型 1参数 1, 数据类型 2参数 2…) return 返回值的类型 as ? begin ?函数定义? end 函数名; ?在“函数名(数据类型 1参数 1, 数据类型 2参数 2…)”中, 小括号内的参数列表中的各参数以逗号作为分隔符。其他部分与无参数函数完全相同。?【示例 16-4 】函数 getEmCount 只能获得表 employeenew 的记录数。我们可以通过向其传递表名参数来获得某个表中的记录数。 利用函数的确定性提高数据库效率?函数的确定性就是指我们输入相同的一个参数,其返回的结果应该一致。如果第一次输入了一个参数值, 第二次再输入相同的参数值的时候返回值肯定与第一次一样,那么 Oracle 就会直接拿到第一次的结果,不再重复执行该函数, 提高效率。函数的确定性,在于可以根据函数名和参数来缓存执行结果。当再次利用相同的参数调用函数时, Oracle 将直接获得缓存值, 而不会执行函数的实际代码,从而提高工作效率。
零点起飞学oracle之自定义函数与存储过程 来自淘豆网www.taodocs.com转载请标明出处.