使用游标实现 mysql 存储过程中的循环
create procedure all_joiner_message( in captions varchar(255), in contents text, in objectid int, in types int , out count int)
begin
declare userids int;
DECLARE _done INT DEFAULT 0;
DECLARE _Cur_Error CURSOR FOR
select a.userid from user_consum as a,sale as b where a.opobjectid=b.id and a.optype=types;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET _done = 1;
OPEN _Cur_Error;
REPEAT
FETCH _Cur_Error INTO userids;
IF NOT _done THEN
insert into usermail (userid,caption,content,readed) values (userids,captions,contents,0);
END IF;
UNTIL _done END REPEAT;
set count = row_count();
CLOSE _Cur_Error;
end;;
相关文档:
关于MySQL事务处理学习记
START TRANSACTION, COMMIT和ROLLBACK语法
START TRANSACTION | BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET AUTOCOMMIT = {0 | 1}
START
TRANSACTION或BEGIN语句可以开始一项新的事务。COMMIT可以提交当前事务 ......
mysql event (用来实现定时任务)。mysql
从
5.1.16
开始拥有的新功能。
下面我写一个简单的示例。
先创建数据库和两个表:
drop database dep;
create database dep;
use dep;
create table aa
(id int AUTO_INCREMENT primary key,
remark varchar(20)
);
create table bb
(id int AUTO_INCREMENT primary k ......
来源: ChinaUnix博客 日期: 2008.04.28 12:29 (共有0条评论) 我要评论
是用mysql的时候,字符编码是个大问题,我一直使用utf8的编码,基本上没什么大问题,就是每次启动mysql的时候都需要设置一下,mysql,时间长了,也怪麻烦的,在网上搜了一下,发现下面的方法能完全解决这个问题,当然如果是自己编译的my ......
假设有表 tb1
ID | name|
----+--------+
1 |2toon|
2 |1*xyz|
语句1:
select * from tb1 where ID='2toon' or name ='2toon';
mysql服务器在某模式下,可以执行这条句,就成功返回两条记录,原因在于 ID=‘2toon’ 加了单引号,mysql解释为 ID=2.
语句2
select * fro ......