存储过程、函数和例程之间有什么区别?

在 MySQL 数据库上下文中,这三个术语有什么区别:

  • 存储过程
  • 存储功能
  • 存储程序

另外,像那些日期时间函数(例如 WEEKDAY()等)这样的内置函数被认为是什么?

55850 次浏览

谷歌是你的朋友。“ mysql 例程函数过程”的第一个匹配项是: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

一个简短的总结:

存储例程是过程或函数。

过程使用 CALL 语句调用,并且只能使用输出变量传回值。

可以像其他函数一样从语句内部调用函数并返回标量值。

MySQL 函数与 MySQL 过程的区别

MYSQL 函数

它必须返回值。 INOUTINOUT不能在函数中使用。但是 返回数据类型必须在创建函数时声明 函数返回一个值。

MYSQL 过程

返回值不是强制性的,但可以使用 OUT 参数 过程返回。可以使用 IN | OUT | INOUT参数。过程 不能从 SQL 语句. 过程返回多个 通过使用 OUTINOUT参数获取值。

在这里,我试图总结职能和程序之间的区别:

  1. 函数 一直都是使用 return 语句返回一个值。过程 通过参数返回一个或多个值,或者根本不返回任何值。
  2. 函数 通常用于计算,而 程序通常用于执行业务逻辑。
  3. 函数只返回1个值。过程可以返回多个值(最大1024)。
  4. 默认情况下,存储过程始终返回零的整数值。而函数返回类型可以是标量、表或表值。
  5. 存储过程具有预编译的执行计划,而函数则没有。
  6. 函数可以由 SQL 语句(如 SELECT func_name FROM DUAL)直接调用,而过程则不能。
  7. 存储过程具有安全性,减少了网络流量,并且可以在任意数量的应用程序中同时调用存储过程。
  8. 函数可以在 SQL 查询中使用,而过程不能在 SQL 查询中使用。这将导致函数和过程之间的主要区别。

函数必须返回一个值,但在存储过程中它是可选的(过程可以返回零个或 n 个值)。 函数只能有它的输入参数,而过程可以有输入/输出参数。 可以从过程调用函数,而不能从函数调用过程。

过程与功能

1.  PROCEDURES may or may not return a value but FUNCTION must return a value
2.  PROCEDURES can have input/output parameter but FUNCTION only has input parameter.
3.  We can call FUNCTION from PROCEDURES but cannot call PROCEDURES from a function.
4.  We cannot use PROCEDURES in SQL statement like SELECT, INSERT, UPDATE, DELETE, MERGE etc. but we can use them with FUNCTION.
5.  We can use try-catch exception handling in PROCEDURES but we cannot do that in FUNCTION.
6.  We can use transaction in PROCEDURES but it is not possible in FUNCTION.