mysql 更新语句update放入存储过程无法执行

surl61240 2018-01-05 03:24:16
有一张表list_alldep,其departid为主键,单独执行更新语句可以成功,如下:

update list_alldep set dep='MyDep1' where departid=101;

但将这条语句放进存储过程,却一直不能正确执行,如下:
CREATE PROCEDURE mysp_update_depart(in p_departid INT,in p_dep varchar(50),out result INT)
BEGIN
DECLARE t_error INTEGER DEFAULT -99;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=-1;
START TRANSACTION;
SET @sqlState = "update list_alldep set dep=? where departid=?;";
SET @p_departid = p_departid;
SET @p_dep = p_dep;

PREPARE stmt from @sqlState;
EXECUTE stmt USING @p_dep,@p_departd;
DEALLOCATE PREPARE stmt;

IF t_error <> 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
SET result=t_error;
END

执行call mysp_update_depart(101,'MyDep2',@rv); 始终返回-99。
郁闷了好久,仍未解决。
望大神指点!
...全文
1056 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
surl61240 2018-01-05
  • 打赏
  • 举报
回复
引用 1 楼 zjcxc 的回复:
IF t_error <> 0 THEN ROLLBACK; ---------------------------------------------------- 这个只在两个地方出现给值,都是 <> 0 的值,那么就是 ROLLBACK,你自己也说了,结果是 -99,也就从实了是 ROLLBACK, 既然 ROLLBACK 了 DECLARE t_error INTEGER DEFAULT -99; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=-1;
一语点醒!多谢! 结帖!
zjcxc 2018-01-05
  • 打赏
  • 举报
回复
IF t_error <> 0 THEN ROLLBACK; ---------------------------------------------------- 这个只在两个地方出现给值,都是 <> 0 的值,那么就是 ROLLBACK,你自己也说了,结果是 -99,也就从实了是 ROLLBACK, 既然 ROLLBACK 了 DECLARE t_error INTEGER DEFAULT -99; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=-1;

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧