亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

存儲過程建立報錯

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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號