oracle存储函数(10级学员 马林课堂总结)

转载 2012年03月22日 21:07:55

函数

2012/3/22

函数与存储过程非常相似,它也是一种存储在数据库中的命名程序块,也可以接受输入值,进行逻辑处理后将结果返回调用者。函数与存储过程之间的主要区别在于,函数必须有返回值,并且可以作为一个表达式的一部分,但不能作为一个完整的语句使用。

创建函数

创建函数的语法与创建存储过程的语法非常相似,它们遵循相同的规则,参数传递也相同。只是在创建函数事可以为其指定大量的属性。创建函数的基本语法如下:

         create [or replace] function function_name

         [(parameter [{ in | out | in out}] date_type,

parameter [{ in | out | in out}] date_type,……)]

return return_type;

{is|as}

Declaration section

Begin

Executable statements

Exception

Exception handlers;

End [function_name]

从这个语法结构可以看出,定义存储过程和函数之间的主要区别之一是,函数必须包含RETURN数据类型子句,用于指定函数返回的数据类型。在函数体内,用户可以再任何地方使用RETURN<expression>语句返回值,其返回值的数据类型必须是函数头中声明的。

例如,下面创建的函数用于求某个数的阶乘:

createorreplacefunction TestFunction (n innumber)

returnnumber

as

Resultnumber:=1;

begin

for i in1..n

loop

Result:=Result*i;

endloop;

return(Result);

end TestFunction;

 

创建的函数TestFunction可以求出任意正整数n!。需要注意,该函数的头部声明看了return值的类型,然后在函数体中使用return语句来返回一个该类型的值。

 

调用函数

       调用函数与调用过程不同,调用函数时,需要一个变量来保存返回值的结果值,这样函数就组成了表达式的一部分。因此,不能像调用过程那样调用过程那样独立的调用函数。

         例如调用上面创建好的TestFunction函数:

declare

var_num number:=5;

var_function number:=0;

begin

var_function:=TestFunction(var_num);

dbms_output.put_line(var_function);

end;

输出结果为;

试图通过EXEC语句来调用函数TestFunction,正如下面错误提示信息所显示

TestFunction不是过程

提示:

在函数中也可以使用OUT参数,但是在函数中同时使用RETURNOUT参数很容易产生混淆,所以在创建函数时,应该使用RETURN语句返回一个单独的值,而将OUT参数用于过程中。

相关文章推荐

oracle集合运算_10级 学员 马林 课堂总结

集合运算 10级 学员 马林 课堂总结 集合操作符 1. UNION/UNION ALL 并集 UNION运算符返回两个集合去掉重复元素后的所有记录 我们以查询姓名中含有A或者M的人的列...

oracle其他数据对象 --- 视图(10级学员 韩晓爽课堂总结)

oracle其他数据对象 --- 视图 一 介绍: 1.什么是视图:     视图是从一个表或多个表中导出的虚表,它与常规表不同之处在于它并不存储数据,它只是在一个存储的查询中定义.视图同真实表...

Extjs继承机制和窗体创建(10级学员 刘根鹏课堂总结)

在extJs中,define方法是用来实现窗体自定义的 以下就是一个define方法的使用,相信看过些方法后,会有更深刻的理解 首先利用create方法创建窗口对象,在4.0中create与new...

Spring中的依赖注入(10级学员 韩晓爽课堂总结)

Spring中的依赖注入   Spring中依赖注入的方式有两种:使用setter方法注入和使用构造器注入 第一种:set方法和构造器 -- 基本属性的注入   set注入是一种直接方式,缺点...

通过工具来监控webService请求和返回时的数据(10级学员 韩晓爽课堂总结)

通过工具来监控webService请求和返回时的数据 一  引言 我们通过WsExplorer和Tcp/Ip Monitor两种工具俩检测wsdl的传送数据的方式, 使用这两种工具的作用:...

WebService入门介绍及案例分析(10级学员 庞丽课堂总结)

WebService入门介绍及案例分析 一、WebService入门概述: 1、什么是WebService? WebService,就是基于Web的服务。它使用Web(HTTP)方式,接收和响应...

Oracl中PL/SQL编程(10级学员 张帅鹏课堂总结)

Oracl中PL/SQL编程 概述: PL/SQL是oracle的专用语言,它对标准的SQL语言的扩展.SQL语句可以嵌套在PL/SQL语言中,并结合处理语句。举例,一般在银行系统中,都是事先写好的...

JqueryUI插件---对话框的使用(10级学员 乔宇课堂总结)

Jquery 中的对话框的设置以及使用          对话框:首先,我们知道我们这个jquery中的对话框,我们必须使用jquery的js和css,那么我们必须引入必须的js和css了.   ...

spring的注解使用和分散配置(10级 学员张帅鹏课堂总结)

spring的注解使用和分散配置 一、spring的注解 简介:在 Spring 2.5中已经可以用注解的方式去驱动 Spring 的依赖注射了,@Autowired注解提供了更细致的控制与更好...

Spring第一个案例(10级学员 庞丽课堂总结)

Spring第一个案例(10级学员 庞丽课堂总结) 刚刚接触Spring,我们完成了第一个Spring的案例。下面我就要对Spring第一个案例源代码进行分析。 一、首先我们在Eclipse下新建...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle存储函数(10级学员 马林课堂总结)
举报原因:
原因补充:

(最多只允许输入30个字)