存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
它跟用户自定义函数的主要区别是:一说
存储过程是用定义一系列的SQL语句的集合,涉及特定表或者其他对象的任务,用户可以调用存储过程。而函数是数据库已定义的的方法,它接受参数并返回某种类型的值,并且不涉及特定用户表。
二说:
函数(UDFs)能像其他表达式那样应用,而存储过程只能通过CALL或EXECUTE来调用
CALL procedure(...)
EXECUTE preocedure(...)
三说:
- 函数是用于做一些计算的子程序
- 标量函数只返回一个值 (or NULL),表函数返回若干行的关系表, 每行若干列
- 函数必须返回值 (using the
RETURN
keyword),存储过程不强制要求. - 存储过程可以用RETURN关键词,但是不要求RETURN值
- 函数能被用于SELECT语句中,只要他们不做数据操作. 而存储过程不能用咋SLELECT语句中.
- 函数只有IN参数,而存储过程可以有OUT 或INOUT参数
- 存储过程可以通过OUT参数返回多个值或者什么也不返回