存储过程与函数的区别与联系

一、函数

  函数与存储过程相似,也是数据库中存储的已命名PL-SQL程序块。函数的主要特征是它必须有一个返回值。通过return来指定函数的返回类型。在函数的任何地方可以通过return expression语句从函数返回,返回类型必须和声明的返回类型一致。

二、函数和存储过程的优点:

  1、共同使用的代码可以只需要被编写一次,而被需要该代码的任何应用程序调用(.net,c++,java,也可以使DLL库)。

  2、这种几种编写、几种维护更新、大家共享的方法,简化了应用程序的开发维护,提高了效率和性能。

  3、这种模块化的方法使得一个复杂的问题、大的程序逐步简化成几个简单的、小的程序部分,进行分别编写,因此程序的结构更加清晰,简单,也容易实现。

  4、可以在各个开发者之间提供处理数据、控制流程、提示信息等方面的一致性。

  5、节省内存空间。它们以一种压缩的形式被存储在外存中,当被调用时才被放入内存进行处理。而且多个用户在调用同一个存储过程或函数时,只需要加载一次即可。

  6、提高数据的安全性和完整性。通过把一些对数据的操作方到存储过程或函数中,就可以通过是否授予用户有执行该语句的权限,来限制某些用户对数据库进行这些操作。

三、函数和存储过程的区别:

  1、存储过程用户在数据库中完成特定操作或者任务(如插入,删除等),函数用于返回特定的数据

  2、存储过程声明用procedure,函数用function。

  3、存储过程不需要返回类型,函数必须要返回类型

  4、存储过程可作为独立的pl-sql执行,函数不能作为独立的plsql执行,必须作为表达式的一部分。

  5、存储过程只能通过out和in/out来返回值,函数除了可以使用out,in/out以外,还可以使用return返回值。

  6、sql语句(DML或SELECT)中不可用调用存储过程,而函数可以。

四、适用场合:

  1、如果需要返回多个值和不返回值,就使用存储过程;如果只需要返回一个值,就使用函数

  2、存储过程一般用于执行一个指定的动作函数一般用于计算和返回一个值。

  3、可以再SQL内部调用函数来完成复杂的计算问题,但不能调用存储过程。

五、存储过程与存储函数的区别和联系

  相同点:1.创建语法结构相似,都可以携带多个传入参数和传出参数。

          2.都是一次编译,多次执行。

  不同点:1.存储过程定义关键字用procedure,函数定义用function

      2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句

      3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。

总结:如果只有一个返回值,用存储函数,否则,一般用存储过程。

原文地址:https://www.cnblogs.com/karrya/p/11600130.html

时间: 2025-01-07 00:57:32

存储过程与函数的区别与联系的相关文章

面试问题 - SQL 中存储过程与函数的区别

SQL 中的存储过程与函数没有本质上的区别 函数 -> 只能返回一个变量. 函数可以嵌入到sql中使用, 可以在select 中调用, 而存储过程不行.  但函数也有着更多的限制,比如不能使用临时表 存储过程 -> 可以返回多个变量. 存储过程的定义如下: 存储过程可以使得对数据库的管理.以及显示关于数据库及其用户信息的工作容易得多.存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量

SQL中存储过程和函数的区别

本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个.而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行.执行的本质都一样.      函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少       1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.       2.    对于存储过程来说可以返回参数,而函数只能返回值或者表对象.       3.    存储过程

【SQL server基础】SQL存储过程和函数的区别

本质上没区别.只是函数有如:只能返回一个变量的限制.而存储过程可以返回多个.而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行.执行的本质都一样.      函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少       1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强.       2.    对于存储过程来说可以返回参数,而函数只能返回值或者表对象.       3.    存储过程

存储过程与函数的区别

delimiter // 将sql结束语句改为//,因为在书写过程或函数时会用到多条语句的执行,需要先改变结束符:以保证begin...end之间多条语句顺利书写. 1.存储过程实现的功能更复杂,而函数针对性更强 2.存储过程可以返回多个值,函数中只能返回一个值. 3.存储过程一般独立的执行,函数可以作为其他SQL语句的组成部分执行.

MySQL存储过程和函数的区别

1.存储过程没有返回值,而函数必须有返回值: 2.存储过程的参数可以是IN.OUT.INOUT类型,而函数的参数只能是IN类型. 版权声明:本文为博主原创文章,未经博主允许不得转载.

存储过程和函数的区别

不同点:1.标识符不同.函数的标识符为FUNCTION,过程为:PROCEDURE.2.函数中有返回值,且必须返回,而过程没有返回值.3.过程无返回值类型,不能将结果直接赋值给变量:函数有返回值类型,调用时,除在select中,必须将返回值赋给变量.4.函数可以在select语句中直接使用,而过程不能,例如:假设已有函数fun_getAVG() 返回number类型绝对值.那么select fun_getAVG(col_a) from table 这样是可以的. 相同点:二者都可以有出参 原文地

触发器、存储过程和函数三者区别

MySQL存储过程和函数

存储过程和函数的区别 存储过程可以返回多个值,而函数可以返回一个 函数可以嵌入到sql中使用,可以使用select调用:而存储过程不可以 本质差不多 创建存储过程和函数 CREATE PROCEDURE/CREATE FUNCTION 举例子之前,补充SQL中delimiter的用法,delimiter命令用于改变解释器的结束符.例如在定义函数过程中,在函数体内可能出现SQL默认的";"结束符,一旦输入,解释器就开始执行,但是很显然有时候其时并没有定义结束,所以定义函数或者过程之前一般

mysql事务、触发器、视图、存储过程、函数

存储过程: procedure 概念类似于函数,就是把一段代码封装起来, 当要执行这一段代码的时候,可以通过调用该存储过程来实现. 在封装的语句体里面,可以用if/else, case,while等控制结构. 可以进行sql编程. 查看现有的存储过程: Show procedure status 删除存储过程 Drop procedure 存储过程的名字 调用存储过程 Call 存储过程名字(); 第1个存储过程 ,体会"封装sql" 第2个存储过程, 体会"参数"