一、介绍
1、存储过程和函数: 事先经过编译并存储在数据库中的一段SQL语句的集合 ;
2、优点:
1)减少数据在数据库和应用程序(例如Java项目)之间的传输,有利于提高数据处理效率
2)处理逻辑都封装在数据库端,调用者不需要了解中间的处理逻辑,一旦处理逻辑发生改变,只需要修改存储过程即可,但对调用者的程序完全没有影响;
3、缺点:存储过程和函数可以将数据的处理放在数据库服务器上进行,避免将大量的结果集传输给客户端 ,减少数据的传输,但是在数据库服务器上进行大量的复杂运算也会占用服务器的CPU,造成数据库服务器的压力,所以不要在存储过程和函数中进行大量的复杂运算,应该尽量将这些运算操作分摊到应用服务器上执行
4、区别:
a.函数必须有返回值
b.存储过程的参数可以使用in输入参数,out输出参数,inout类型(可以作为输入参数和输出参数),而函数的参数只能是in 类型;
二、存储过程和函数的相关操作
1、eg1
程序1:无参的存储过程
delimiter // drop procedure if exists p1; // create procedure p1() begin select now(); end; // |
调用存储过程 程序:
call p1(); // |
2、eg2
有参数的存储过程
drop procedure if exists p2; // create procedure p2(in a int, out b int) begin set b = a*a; end; // call p2(5, @v1); // select @v1; // |
3、eg3
创建函数
create function fn1(a int) --函数可以replace,存储过程不可以 returns varchar(255) --定义返回类型 begin declare r int; set r = a*a; return r; end; |
4、其他 : //待