区别: 1. 存储过程一旦创建就想函数一样可以调用,但是函数一定有返回值,存储过程可以有可以没有。
2. 存储过程和视图有着相似的有点,安全,减少网络传输量,但是视图只能查不能增/删/改,存储过程可以实现更复杂的数据处理,定义变量、游标等。
存储过程
概念:一组经过预编译的SQL语句封装。
执行过程:预存储MySQL服务器,需要执行的时候客户端向服务端发出调用命令,服务端可以把预编译并存储好的一系列SQL语句全部执行。
优点: 1.具备重用性,减少程序员的开发压力。
2.减少网络传输量:客户端不需要通过网络传输所有的SQL语句给服务器
3.封装批量SQL的具体实现,提高查询的安全性。
创建语法:
1 #参数类型:IN|OUT|INOUT ,不写默认IN 2 #参数数据类型INT VARCHAR... 3 create procedure 存储过程名(参数类型 参数名 参数数据类型) 4 # 局部变量定义 declare a varchar(10) default ''; 5 begin 6 #存储过程体 7 #变量赋值SET a = 'abc' 8 end 补充内容:存储过程中的变量为局部变量,若在sql中定义全局变量用@a='abc' 调用存储过程:call 存储过程名(实参1,实参2...)
存储函数
函数作用:可以实现更负责的逻辑操作,提高用户对数据库的管理效率。
创建语法
1 create function 函数名(参数名 参数数据类型,...) 2 returns 返回值类型 3 begin 4 函数体 #必须包含return语句 5 end 语法上与存储过程的差异 1. procedure -> function 2. 参数列表不需要定义参数IN|OUT|INOUT类型 3. 多了 returns 和 return 4. 调用语法:select 函数名(传参)