oracle函数和存储过程有什么区别

如题所述

一、主体不同

1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。

2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。

二、特点不同

1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。

2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。


三、功能不同

1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的操作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。

2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。


参考资料来源:百度百科-Oracle存储过程

参考资料来源:百度百科-数据库函数

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-26
1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等)参数的返回情况来看:如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数;从调用情况来看:如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题.oracle函数和存储过程最大的区别就在于,函数必须带上一个return返回值,后面跟的是返回值的类型,而存储过程可以不带任何返回值。另外,存储过程和函数同样支持in,out,in out这三种类型的参数,对应的是分别指明输入性的参数、输出型的参数、输入输出型的参数。也就是说如果我们需要返回多个值,除了可以使用存储过程来实现之外,也可以用函数来实现,方法是你将其中一个用return来返回,其他就指明该数据为out参数就可以了。Oracle中存储过程和函数都可以返回值,但是函数必须要返回值,并一般只返回一个值,而存储过程则没有这个限制。从一般应用上来看,如果不需要返回值或者需要多个返回值,使用存储过程,如果只用一个返回值,就使用函数,从一般程序员的习惯上来看,这样更符合思维。本回答被提问者采纳
第2个回答  2018-07-30
oracle中存储过程和函数的区别如下:
1.存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3.存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4.当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。本回答被网友采纳
第3个回答  2013-12-12
最简单的解释是 , 函数返回值,而存储过程不返回。

oracle函数和存储过程有什么区别
一、主体不同 1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。二、特点不同 1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。2、存储过程:用...

oracle存储过程和函数的区别
oracle存储过程和函数的区别 1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用.函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些...

oracle存储过程和函数的区别
不同点:1.存储过程定义关键字用procedure,函数定义用function。2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(se...

oracle中函数和存储过程的区别和联系
函数有1个返回值,而存储过程可以有多个或者没有。函数可以在其他语句中直接调用,而存储过程必须单独调用。函数通常用于计算或较为单一的数据功能,存储过程相对完成更复杂的复合性的数据功能。最关键普通语句每次执行都要编译,而存储过程只在创建时编译之后直接调用,速度更快,在大数据复杂功能时尤其明显。...

oracle函数和存储过程的区别
在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点。刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和存储过程的区别。一、存储过程 1.定义 存储过程是存储在数据库中提供所有用户程序调用的子程序,定义存储过程的关键字为procedure。2.创建存储...

Oracle 存储过程和函数的区别
过程:函数和存储过程的统称。函数:有且仅有一个返回值,可以用于SQL语句中。 如:x := get_X(),select get_X() from dual,返回值为函数调用的结果。存储过程:无返回值。要返回结果,必须声明为out参数。如:sp_x(x,y,z),x和y为in类型参数,z为out\/in out类型参数。在oracle中,封装...

oracle函数和存储过程的区别
最大区别应该是返回值的表现形式不同,造成在很多区域的使用形式不一样。函数:是直接返回值。y=f(x) ,所以他可以被 sql语句调用,可以给变量赋值。存储过程:无法做到上面的形式。存储过程的返回值是以参数的形式存在。代入然后带出。从返回值的个数来说,函数最多只有一个返回值,当然如果封装后代...

Oracle中存储过程和函数的区别
存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。优 点:1. 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以...

Oracle 存储过程和函数的区别
其实,Oracle函数和存储过程差别很小,对比其他数据库,比如SqlServer:sqlserver中,函数是不能存在非select的dml语句的,换句话说,函数中,sqlserver是不能出现update、delete、insert等语句的 而Oracle中,是十分自由和宽容的,update、delete、insert等语句都可以出现 但因为Oracle的自由度,会引起其它一些...

Oracle中存储过程和函数的区别
函数有返回值,而过程没有,简单点就是 function test_f (parameter in varchar2) return varchar2;procdrue test_p (parameter in varchar2);declare result varchar2;begin result := test_f; --函数有返回值 必须用变量去装载 test_p; --过程没有可直接调用.end;

相似回答