mysql中游标在存储过程中的详细用法

昨天写的一个东东,分享下给大家。

drop PROCEDURE  if exists sp_cleanUserData;

CREATE  PROCEDURE `sp_cleanUserData`()

BEGIN

/*定义游标*/

declare v_dt bigint(20) default 0 ;

declare v_num INT DEFAULT 0;

/*游标循环到末尾时给定义的常量赋值*/

declare cur_userId   CURSOR FOR select  userId from  user_level_info    where  DATE_SUB(CURDATE(), INTERVAL 60 DAY) >= firstLoginDate and lv<=10 and vip=0  ;

declare CONTINUE HANDLER FOR SQLSTATE ‘02000‘ SET v_dt = -1;

/*开游标*/

OPEN  cur_userId;

/*游标赋值*/

FETCH  cur_userId INTO v_dt;

set v_num=1;

/* 循环体  */

WHILE ( v_dt !=-1 ) DO

/* 用户任务表 */

delete  from  task_user where user_id =v_dt;

/* 玩家公告  */

delete  from  user_action_info where userId =v_dt;

/*每循环100次commit下*/

set v_num= v_num+1;

if  v_num>100 then

commit;

set v_num=1;

end if;

/*读取下一行的数据*/

FETCH cur_userId INTO v_dt;

/*循环结束*/

END WHILE;

/*关闭游标*/

CLOSE cur_userId;

END;

call sp_cleanUserData;

mysql中游标在存储过程中的详细用法,布布扣,bubuko.com

时间: 2024-10-01 04:56:45

mysql中游标在存储过程中的详细用法的相关文章

Hibernate中createCriteria即QBC查询的详细用法 .Hibernate中createCriteria即QBC查询的详细用法 .

现在假设有一个Student类,内有id,name,age属性String hql = "from Student s";按照以前的做法,我们通常是Query query = session.createQuery(hql);或者要按照条件检索的话.String hql = "from Student s where s.name like '王%'"Query query = session.createQuery(hql);不用HQL而使用QBC的话,那么代码为

mysql实例:在存储过程中创建临时表

在mysql的存储过程创建临时表的例子,是学习mysql 临时表操作的不错的例子. 操作步骤: mysql> mysql> mysql> CREATE TABLE Employee( //创建普通表 -> id int, -> first_name VARCHAR(15), -> last_name VARCHAR(15), -> start_date DATE, -> end_date DATE, -> salary FLOAT(8,2), ->

DB中耗时的 存储过程 及执行详细情况

SELECT a.object_id, a.database_id, OBJECT_NAME(object_id, database_id) 'proc name', a.cached_time, a.last_execution_time, a.total_elapsed_time, a.total_elapsed_time/a.execution_count AS [avg_elapsed_time], a.execution_count, a.total_physical_reads/a.

转——JAVA中calendar,date,string 的相互转换和详细用法

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

Hibernate中createCriteria即QBC查询的详细用法

现在假设有一个Student类,内有id,name,age属性String hql = "from Student s";按照以前的做法,我们通常是Query query = session.createQuery(hql);或者要按照条件检索的话.String hql = "from Student s where s.name like '王%'"Query query = session.createQuery(hql);不用HQL而使用QBC的话,那么代码为

SQL Server数据库的存储过程中定义的临时表,真的有必要显式删除(drop table #tableName)吗?

本文出处:http://www.cnblogs.com/wy123/p/6704619.html 问题背景 在写SQL Server存储过程中,如果存储过程中定义了临时表,有些人习惯在存储过程结束的时候一个一个显式地删除过程中定义的临时表(drop table #tName),有些人又没有这个习惯,对于不明真相的群众或者喜欢思考的人会问,存储过程中定义的临时表,最后要不要主动删除,为什么?或者说是不是存储过程结束的时候删除临时表更加规范?不止一个人问过这个问题了,说实在话,本人之前确实不清楚,只

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

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

MySQL在存储过程中使用游标

#在存储过程中使用游标 DROP TABLE IF EXISTS tbl; CREATE TABLE tbl( id INT NOT NULL AUTO_INCREMENT, title VARCHAR(50) NOT NULL, author VARCHAR(50) NOT NULL, PRIMARY KEY(id) ); DROP PROCEDURE IF EXISTS sp7; CREATE PROCEDURE sp7(INOUT rst VARCHAR(100), OUT rst_cod

Mysql存储过程中使用cursor

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11