mysql 用存储过程查询一张表集合更新到另一张表

经常有朋友问存储过程怎么写,有什么好处。
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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值