mysqlupdate存储过程
java">createprocerebatchUpdate(innint)
begin
declareinParamintdefaultn;
declareiintdefault1;
declareidint;
declareusernamevarchar(255);
declareintegralvarchar(255);
declarerankingint;
declare_resultSetcursorforselecta.id,a.username,a.integral,a.rankingfromuseraorderbya.integraldesclimitinParam;
open_resultSet;
whilei<=inParamdo
fetch_resultSetintoid,username,integral,ranking;
updateuseraseta.ranking=iwherea.id=id;
seti=i+1;
endwhile;
close_resultSet;
end;
mysql>select*fromuser;
+----+----------+----------+---------+
|id|username|integral|ranking|
+----+----------+----------+---------+
|1|abc|1|0|
|2|abc|2|0|
|3|abc|3|0|
|4|abc|4|0|
|5|abc|5|0|
|6|abc|6|0|
|7|abc|7|0|
|8|abc|8|0|
|9|abc|9|0|
|10|abc|10|0|
|11|abc|11|0|
|12|abc|12|0|
|13|abc|13|0|
|14|abc|14|0|
+----+----------+----------+---------+
14rowsinset
mysql>callbatchUpdate(14);
QueryOK,1rowaffected
mysql>select*fromuser;
+----+----------+----------+---------+
|id|username|integral|ranking|
+----+----------+----------+---------+
|1|abc|1|14|
|2|abc|2|13|
|3|abc|3|12|
|4|abc|4|11|
|5|abc|5|10|
|6|abc|6|9|
|7|abc|7|8|
|8|abc|8|7|
|9|abc|9|6|
|10|abc|10|5|
|11|abc|11|4|
|12|abc|12|3|
|13|abc|13|2|
|14|abc|14|1|
+----+----------+----------+---------+
14rowsinset
‘贰’ mysql update 存储过程
你是单表操作,怎么会用到事务呢?一条update命令下去,要么所有的修改都成功,要么都失败,不需要利用事务的啊,系统会在真正的更新数据前纪录日志的,它会自动控制是提交还是回滚。
何况只有几万条数据,哪怕在普通的台式机上,也就是眨眼间完成的事。
‘叁’ mysql 存储过程中update影响行数为0,回滚
使用FOUND_ROWS() 获得影响的行数,再用IF判断是否等于0就行了。
--开始事务
starttransaction;
callsetCoin(zjAmount,0,`uid`,liqType,`type`,info,_betId,serializeId,'');
updateblast_betssetlotteryNo=_kjData,zjCount=_zjCount,bonus=zjAmount,fanDianAmount=_fanDianAmountSelfwhereid=_betId;
IFFOUND_ROWS()=0THEN
ROLLBACK;
ELSE
COMMIT;
ENDIF;
commit;
‘肆’ MySQL在原存储过程中增加update修改记录行报1064错误请教大神
1064是SQL的语法错误,最简单最低级的错误而已。
你这个update语句本身就有问题:
UPDATE woic SET seq=comments WHERE seq='000' AND check_passed=0;
这里的comments 应该是传进来的吧?你如果不传进来就要给常量。
‘伍’ MySql中更新数据库的存储过程
你的语句没问题,但是你的变量定义的有问题
‘陆’ mysql存储过程能返回update更新操作的结果吗
在存储过程中使用ROW_COUNT()
mysql> select * from a1;
-> //
+------+-------+
| id | name |
+------+-------+
| 1 | timac |
+------+-------+
1 row in set (0.00 sec)
mysql> \d ;
mysql> update a1 set name='king' where id=1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> insert into a1 values(2,'K1'),(3,'K2');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 2 |
+-------------+
1 row in set (0.00 sec)
mysql> update a1 set name='kings' where id=4;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 0 |
+-------------+
1 row in set (0.00 sec)
只有返回的row_count()值大小还判断是否成功