[英]Stored Procedure in mysql phpmyadmin #1064
我正在嘗試在 phpmyadmin 中的 Mysql 中編寫存儲過程,但遇到了錯誤:
DELIMITER //
DROP PROCEDURE IF EXISTS USP_SwitchTable //
CREATE PROCEDURE USP_SwitchTable(IN idTable1 INT, IN idTable2 INT)
AS BEGIN
DECLARE idFirstBill INT;
DECLARE idSecondBill INT;
SELECT idFirstBill = id FROM bill WHERE id_table = idTable1 AND status = 0;
SELECT idSecondBill = id FROM bill WHERE id_table = idTable2 AND status = 0;
IF (idFirstBill IS NULL)
BEGIN
INSERT bill (id_table, bill_maker, status) VALLUES (idTable1, 1, 0);
SELECT idFirstBill = MAX(id) FROM bill WHERE id_table = idTable1 AND status = 0;
END
IF (idSecondBill IS NULL)
BEGIN
INSERT bill (id_table, bill_maker, status) VALLUES (idTable2, 1, 0);
SELECT idSecondBill = MAX(id) FROM bill WHERE id_table = idTable2 AND status = 0;
END
SELECT id INTO IDBillInfoTable FROM bill_info WHERE id_bill = idSecondBill;
UPDATE bill_info SET id_bill = idSecondBill WHERE id_bill = idFirstBill;
UPDATE bill_info SET id_bill = idFirstBill WHERE id IN (SELECT * FROM IDBillInfoTable);
DROP TABLE IDBillInfoTable;
END//
DELIMITER ;
這就是它所說的:
錯誤 #1064 - 您的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以了解在“開始插入賬單(id_table、bill_maker、狀態)值(idTable1、1、0)附近使用的正確語法;” 在第 9 行
我能做些什么來解決這個問題? 我對這個有點新,謝謝大家
MySQL IF 子句使用THEN
END IF
而不是BEGIN
和END
。
您可能還想為IDBillInfoTable
使用臨時表,以便它可以同時使用。
IF (idSecondBill IS NULL) THEN
INSERT INTO bill (id_table, bill_maker, status)
VALUES (idTable2, 1, 0);
SELECT MAX(id) into idSecondBill
FROM bill
WHERE id_table = idTable2 AND status = 0;
END IF;
和臨時表創建:
CREATE TEMPORARY TABLE IDBillInfoTable AS
SELECT id
FROM bill_info
WHERE id_bill = idSecondBill;
並刪除臨時表
DROP TEMPORARY TABLE IDBillInfoTable;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.