使用MYSQL存储过程,可以实现诸多的功能,下面将为您介绍一个MYSQL存储过程中使用游标的实例,希望对您能有所启迪。
DELIMITER $$
DROP PROCEDURE IF EXISTS getUserInfo $$
CREATE PROCEDURE getUserInfo(in date_day datetime)—— 实例— MYSQL存储过程名为:getUserInfo— 参数为:date_day日期格式:2008-03-08—BEGINdeclare _userName varchar(12); — 用户名declare _chinese int ; — 语文declare _math int ; — 数学declare done int;
— 定义游标DECLARE rs_cursor CURSOR FOR SELECT username,chinese,math from userInfo where datediff(createDate, date_day)=0;
DECLARE CONTINUE HANDLER FOR NOT FOUND Set done=1;
— 获取昨天的日期if date_day is null thenset date_day = date_add(now(),interval -1 day);end if;
open rs_cursor;cursor_loop:loopFETCH rs_cursor into _userName, _chinese, _math; — 取数据if done=1 thenleave cursor_loop;end if;
— 更新表update infoSum set total=_chinese+_math where UserName=_userName;end loop cursor_loop;cLose rs_cursor;
DELIMITER ;
以上就是MYSQL存储过程中使用游标的实例介绍。
【编辑推荐】
mysql存储过程的调用方法
MYSQL IFNULL函数的使用
带您了解mysql CONCAT()函数
查看三种MySQL字符集的方法

oracle存储过程中打开游标有几种方法?用open直接打开?还是用open *** for***?
两种方法1.声明游标时写好SELECT语句,如CURSOR r_cur1 IS select *** from tableName where 条件;使用时 OPEN r_cur1; LOOP FETCH *** INTO variable; EXIT WHEN r_cur1%NOTFOUND OR r_cur1%NOTFOUND IS NULL;。 。 。 2.声明游标ccc sys_refcursor;使用时 open ccc for select dept_code,dept_name from _dict; loop fetch ccc into aa,bb; exit when ccc%notfound; 。 。 。 end loop; close ccc;
mysql存储过程中 declare 和 set 定义变量的区别
mysql存储过程中 declare 和 set 定义变量的区别declare为对变量进行声明,声明必须制定变量的数据类型,只能写在过程的前面set是对变量赋值,可以放在过程的任何地方对没有declare声明过的变量赋值,该变量必须以加上@号,否则会报错DECLARE a INT;-- 如果放在下面语句之后,会报错SET a = (SELECT id FROM tb);-- 如果没有前面的声明,会报错SET @b = (SELECT title FROM tb);
sql存储过程的执行
执行带参数的存储过程的方法如下:Exec sp_configure allow updates,1--允许更新系统表。 exec _ChangeObjectOwnerBatch OldOwner,dbo以上是两个例子。 SQL Server中执行带参数的存储过程的方法是:EXEC 存储过程名字 参数1,参数2,数值参数EXEC 是一个关键字。 字符串参数使用单引号括起来,数值参数不需要使用单引号
发表评论