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

oracle函数和存储过程有什么区别,第1张

一、主体不同

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

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

二、特点不同

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

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

三、功能不同

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

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

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

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

本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。

函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少

1.一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。

2.对于存储过程来说可以返回参数,而函数只能返回值或者表对象。

3.存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

4.当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。

三者差别:

1、存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。;

2、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用;

3、触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。

分别含义:

1、存储过程的特点

①存储过程只在创建时进行编译,以后执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。

② 当对数据库进行复杂 *** 作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂 *** 作用存储过程封装起来。

③可以在过程中调用另一个存储过程。可以在存储过程中调用函数。这可以简化一系列复杂语句。

④ 安全性高,可设定只有某用户才具有对指定存储过程的使用权。

⑤参数有三种(IN、OUT、IN OUT),可返回多个参数值。

⑥在ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。

⑦ 存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

2、函数的特点

① 函数只有一种参数(IN),只有一条RETURN语句,只能返回单一的值。

②可在SQL语句(DML或SELECT)中调用函数。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。

3、触发器的特点

触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9892983.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存