经常有朋友问存储过程怎么写,有什么好处。
1、通常存储过程有助于提高应用程序的性能。当创建,存储过程被编译之后,就存储在数据库中。
但是,MySQL实现的存储过程略有不同。 MySQL存储过程按需编译。
在编译存储过程之后,MySQL将其放入缓存中。MySQL为每个连接维护自己的存储过程高速缓存。
如果应用程序在单个连接中多次使用存储过程,则使用编译版本,否则存储过程的工作方式类似于查询。
2、存储过程有助于减少应用程序和数据库服务器之间的流量,因为应用程序不必发送多个冗长的SQL语句,而只能发送存储过程的名称和参数。
3、存储的程序对任何应用程序都是可重用的和透明的。存储过程将数据库接口暴露给所有应用程序,以便开发人员不必开发存储过程中已支持的功能。
4、存储的程序是安全的。数据库管理员可以向访问数据库中存储过程的应用程序授予适当的权限,而不向基础数据库表提供任何权限。
附上代码
-- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除
DROP PROCEDURE IF EXISTS test;
-- 创建存储过程
CREATE PROCEDURE test()
BEGIN
//定义循环游标
DECLARE s int DEFAULT 0;
//查询出来的id结果集
DECLARE ids VARCHAR(255);
//查询出来的测试数量结果集
DECLARE dia VARCHAR(255);
//创建游标,这里是我查询出来的结果集放入t1
DECLARE t1 CURSOR FOR SELECT id,diamond FROM tb_user_luohao;
-- 声明当游标遍历完后将标志变量置成某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
-- 打开游标
open t1;
fetch t1 into ids,dia;
while s<>1 DO
UPDATE tb_user SET diamond=dia WHERE id=ids;
fetch t1 into ids,dia;
end WHILE;
CLOSE t1;
END