为了账号安全,请及时绑定邮箱和手机立即绑定

存储过程建立报错

CREATE PROCEDURE 'seckill'.'execute_seckill'(IN v_seckill_id bigint,IN v_phone bigint,IN v_kill_time TIMESTAMP ,out r_result INT )
BEGIN
 DECLARE insert_count INT DEFAULT 0;
 start TRANSACTION ;
 INSERT ignore INTO success_killed(seckill_id,user_phone,create_time) VALUES (v_seckill_id,v_phone,v_kill_time);
 SELECT ROW_COUNT() INTO insert_count;
 IF(insert_count==0) THEN
   ROLLBACK ;
   SET r_result=-1;
 ELSEIF(insert_count<0) THEN
   ROLLBACK ;
   SET r_result=-2;
 ELSE
    update seckill set number = number - 1
     where seckill_id = #{seckillId}
      and start_time &lt;= #{killTime}
      and end_time >= #{killTime}
      and number > 0;
   SELECT ROW_COUNT() INTO insert_count;
   IF(insert_count==0) THEN
     ROLLBACK ;
     SET r_result=0;
   ELSEIF(insert_count<0) THEN
     ROLLBACK ;
     SET r_result=-2;
   ELSE
     COMMIT ;
     SET r_result=1;
   END IF;
 END IF;
END ;
$$


http://static.mukewang.com/img/59ad895a0001c93e14800123.jpg

正在回答

3 回答

楼上正解,反单引号用错了,你一般看到“ERROR 1064 (42000): You have an error in your SQL syntax”,都是语法错误

0 回复 有任何疑惑可以回复我~

将存储过程名上的单引号改为反单引号(ESC下面),就可以了

5 回复 有任何疑惑可以回复我~

去掉这个前缀"'seckill'."就OK了,你可能已经进到这个库里了,不需要再加数据库前缀了

1 回复 有任何疑惑可以回复我~
#1

黑衣剑士z

貌似不是这个原因吧,进入到库中也可以怎么写,我use database之后再写没问题 版本:mysql-5.7.21,OS:win10
2018-05-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

存储过程建立报错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信