Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql phpmyadmin#1064中的存储过程_Mysql_Stored Procedures_Phpmyadmin - Fatal编程技术网

mysql phpmyadmin#1064中的存储过程

mysql phpmyadmin#1064中的存储过程,mysql,stored-procedures,phpmyadmin,Mysql,Stored Procedures,Phpmyadmin,我试图在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 idFirst

我试图在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_表,票据制作人,状态)值(idTable1,1,0);”附近使用的正确语法在9号线


我能做些什么来解决这个问题?我对此有点陌生,谢谢大家

MySQL IF子句使用
然后
结束IF
而不是
开始
结束

您可能还希望为
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;