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

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

使用存儲過程報錯

存儲過程代碼與老師寫的一樣,也能執行,但是

執行CALL execute_seckill(1007,13813813822,NOW(),@r_result);后報錯

ERROR 1146 (42S02): Table 'seckill.success_kill' doesn't exist

正在回答

2 回答

我也碰到這個錯誤,請問解決了嗎?

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

先在mysql客戶端執行下這段sql,創建存儲過程。

DROP?PROCEDURE?IF?EXISTS?execute_seckill;

--?秒殺執行存儲過程
DELIMITER?$$?--?console?";"?轉換為?"$$"

--?定義存儲過程
--?參數:in?輸入參數;?out?輸出參數
CREATE?PROCEDURE?`seckill`.`execute_seckill`(
??IN?v_seckill_id?BIGINT?,
??IN?v_phone?BIGINT?,
??IN?v_kill_time?TIMESTAMP?,
??OUT?r_result?INT
)
??BEGIN
????--?insert_count?臨時變量定義(需要在事物開始之前定義)
????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
????)?;
????--?row_count():返回上一條修改類型sql(delete,insert,upodate)的影響行數
????--?row_count:?0:未修改數據;?>0:表示修改的行數;?<0:sql錯誤/未執行修改sql
????SELECT?ROW_COUNT()?INTO?insert_count?;
????IF?(insert_count?=?0)?THEN
??????ROLLBACK?;
??????--?設置滿足業務邏輯需要的返回結果?r_result
??????SET?r_result?=?-?1?;
????ELSEIF?(insert_count?<?0)?THEN
??????ROLLBACK?;
??????SET?r_result?=?-?2?;
????ELSE
??????UPDATE?seckill
??????SET?number?=?number?-?1
??????WHERE
????????seckill_id?=?v_seckill_id
????????AND?end_time?>?v_kill_time
????????AND?start_time?<?v_kill_time
????????AND?number?>?0?;
??????--?再次使用?row_count()
??????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?;
$$
--?代表存儲過程定義結束


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

舉報

0/150
提交
取消
Java高并發秒殺API之高并發優化
  • 參與學習       78695    人
  • 解答問題       182    個

Java實現高并發秒殺API的第四門課,小伙伴一定可以從中受益

進入課程

使用存儲過程報錯

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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