mysql 存储过程出错。

blue_apple2006 2011-12-12 10:28:18
求高手看下为什么start transaction处报错。
谢谢!

create procedure usp_SendSms
(
in p_mobilephone varchar(15),
in p_content varchar(400),
out p_id int(10)
)

begin

start transaction;

set p_id:=(select max(id) from guangbo for update);
set p_id:=p_id+1;
insert into guangbo(id,mobilephone,content) values(p_id,p_mobilephone,p_content);

commit;

end;
...全文
113 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_apple2006 2011-12-12
  • 打赏
  • 举报
回复
果然是分隔符的问题,真汗。谢谢各位 。
张沛洁 2011-12-12
  • 打赏
  • 举报
回复
set赋值不需要再赋值符号前加冒号的。
如果还不行,你可以试着这样处理:
select mac(id) into p_id ......
ACMAIN_CHM 2011-12-12
  • 打赏
  • 举报
回复
delimiter //

create procedure usp_SendSms
(
in p_mobilephone varchar(15),
in p_content varchar(400),
out p_id int(10)
)

begin

start transaction;

set p_id:=(select max(id) from guangbo for update);
set p_id:=p_id+1;
insert into guangbo(id,mobilephone,content) values(p_id,p_mobilephone,p_content);

commit;

end;

//


如果是在MYSQL命令行工具中用DELIMITER改变一下提交符,否则MYSQL工具看到分号就提交了你的语句。
wwwwb 2011-12-12
  • 打赏
  • 举报
回复
在5.5下测试没有问题
DELIMITER $$
CREATE PROCEDURE usp_SendSms
(
IN p_mobilephone VARCHAR(15),
IN p_content VARCHAR(400),
OUT p_id INT(10)
)

BEGIN

START TRANSACTION;

SET p_id:=(SELECT MAX(id) FROM guangbo FOR UPDATE);
SET p_id:=p_id+1;
INSERT INTO guangbo(id,mobilephone,content) VALUES(p_id,p_mobilephone,p_content);

COMMIT;

END;$$
DELIMITER ;

56,912

社区成员

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

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