mysql数据库 | 存储过程
1. 什么是存储过程?
如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。
既然它是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。
2. 存储过程的优势?
-
是预先编译好的sql,运行速度很快,传统的零散的sql是需要先编译在运行的
-
相当于java中的函数,封装了一段sql代码,这样既方便了代码的复用,也可以通过控制调用存储过程接口的权限来保证数据库的安全。
-
方便分工,方便DBA(数据库管理员)专注于sql编写和优化;
-
存储过程的能力大大增强了SQL语言的功能和灵活性。
-
可保证数据的安全性和完整性。
-
通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。
-
可以降低网络的通信量。
使体现企业规则的运算程序放入数据库服务器中,以便 集中控制。
3. 存储过程的缺点?
- 调试不是很方便 (没有像开发程序那样容易)
- 可能没有创建存储过程的权利
- 重新编译问题
- 移植性问题(存储过程依赖于具体的数据库)
4. 语法规范
创建
CREATE procedure demo1(in a int, in b int)
begin 所有被封装的语句一定在begin和end之间!
select a+b;
end;
调用
call demo1(1, 2);
删除
DROP PROCEDURE demo1;
声明变量
declare c int default 10;
判断分支
if 条件 then 执行语句 end if
if 条件 then 执行语句1 else 执行语句2 end if
if a+b+c<10 then
select a+b+c
else select a+b
end if;
循环结构
while 条件 do
执行语句;
条件改变语句;
end while;
declare result int default 0;
while c<3 do;
set result=result+c;
set c=c+1;
end while;