mysql 存储过程 游标 判断游标是否为空

BEGIN
	DECLARE id long;
	DECLARE Done INT DEFAULT 0;
	DECLARE cashamount DECIMAL(10,2) DEFAULT 0.00;
	DECLARE scorecamount INT DEFAULT 0;
	DECLARE userids CURSOR FOR SELECT userid from info_user where isreal = 1;
	DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET Done = 1;

	OPEN userids;

	REPEAT

		FETCH userids into id;

		DELETE FROM		info_black	WHERE userid=id;
			DELETE FROM		info_consignee	  	WHERE userid=id;

			SET	cashamount = (SELECT balance	FROM  trade_account AS b WHERE  b.ownertype = 1 AND b.ownerid = id	AND accounttype = 1);
			UPDATE trade_account SET balance = balance + cashamount WHERE  accountid = 6500000000000000;

			SET scorecamount = (SELECT balance	FROM  trade_account AS b WHERE  b.ownertype = 1 AND b.ownerid = id	AND accounttype = 0);
			UPDATE trade_account SET balance = balance + scorecamount WHERE  accountid = 3500000000000000;

			DELETE a,b FROM trade_cashtrade AS a INNER JOIN trade_account AS b WHERE  b.ownertype = 1 AND b.ownerid = id	AND (a.payerid = b.accountid OR a.payeeid = b.accountid);
			DELETE a,b FROM trade_scoretrade AS a INNER JOIN trade_account AS b WHERE  b.ownertype = 1 AND b.ownerid = id	AND (a.payerid = b.accountid OR a.payeeid = b.accountid);
	UNTIL Done END REPEAT;

	CLOSE userids;
END

  

时间: 2024-10-23 22:20:28

mysql 存储过程 游标 判断游标是否为空的相关文章

MySQL存储过程中判断形参是否为空null

直接看例子: DELIMITER $$CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `restore`(username varchar(50))BEGINif username is not null then    update user set invalid=0 and activate_time='0000-00-00 00:00:00' where `name`=username;else    update user set invalid

mysql存储过程(查询数据库 游标循环 if判断 插入别的数据库)

BEGIN declare f_age int;DECLARE incode1 VARCHAR(100);DECLARE incode2 VARCHAR(100);DECLARE incode3 VARCHAR(100);DECLARE incode4 VARCHAR(100);DECLARE incode5 VARCHAR(100);DECLARE incode6 VARCHAR(100); declare a1 int; declare a2 int; declare a3 int; dec

mysql 存储过程中使用游标中使用临时表可以替代数组效果

mysql不支持数组.但有时候需要组合几张表的数据,在存储过程中,经过比较复杂的运算获取结果直接输出给调用方,比如符合条件的几张表的某些字段的组合计算,mysql临时表可以解决这个问题.临时表:只有在当前连接情况下, TEMPORARY 表才是可见的.当连接关闭时, TEMPORARY 表被自动取消.必须拥有 create temporary table 权限,才能创建临时表.可以通过指定 engine = memory; 来指定创建内存临时表. 先建立要用的数据表及数据: drop table

MySQL存储过程入门教程

存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程和函数的区别 函数往往作为公式使用,存储过程作为完成某种功能使用. 函数分为表值函数跟标量函数.表值函数是经过一些sql语句方法最后返回一张表,标量函数是经过一些sql语句方法最后返回一个值.

第12章 mysql 存储过程

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Chapter 20 Stored Programs and Views [6]

mysql存储过程之游标遍历数据表

原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹. 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT

MYSQL进阶学习知识拓展一:MySQL 存储过程之游标!

一.MySQL游标的概念 游标介绍: MySQL的游标(cursor)是一个重要的概念,通过查找资料与自己的理解,主要得出以下几点关于自己的理解. 有数据缓冲的思想:游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果. 先有数据基础:游标是在先从数据表中检索出数据之后才能继续灵活操作的技术.   类似于指针:游标类似于指向数据结构堆栈中的指针,用来pop出所指向的数据,并且只能每次取一个. 游标优缺点: 游标的优点: 因为游标是针对行操作的,所以对从数据库中select查询得到的每一

MySQL 存储过程/游标/触发器/事务

来源:http://www.cnblogs.com/zhuyp1015/p/3575823.html 将会用到的几个表 mysql> DESC products; +------------+--------------+------+-----+---------+----------------+| Field      | Type         | Null | Key | Default | Extra          |+------------+--------------+-

Mysql 存储过程使用游标

-- 完整例子 CREATE PROCEDURE test BEGIN -- 定义参数    DECLARE _id INT; -- 定义游标    DECLARE no_more_products INT DEFAULT 0;    DECLARE RESULT_test CURSOR FORSELECT num1 from numtest; -- 如果NOT FOUND游标DECLARE  CONTINUE HANDLER FOR NOT FOUND  SET  no_more_produc