求高手看下为什么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;

解决方案 »

  1.   

    在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 ;
      

  2.   

    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工具看到分号就提交了你的语句。
      

  3.   

    set赋值不需要再赋值符号前加冒号的。
    如果还不行,你可以试着这样处理:
    select mac(id) into p_id ......