1

同時に複数のプロシージャを作成するクエリを作成しようとしています。ただし、最初にそれらを削除しようとすると、1064 エラーがスローされ、最初のプロシージャ クエリのみが考慮されます。

別々に実行しようとすると完全に手順が作成されますが、一緒に実行すると停止し、最初のドロップ後に停止します

DROP PROCEDURE IF EXISTS add;
DROP PROCEDURE IF EXISTS remove;
DROP PROCEDURE IF EXISTS edit;

#PROCEDURE TO ADD  
DELIMITER //
CREATE PROCEDURE add
(p_Name VARCHAR(30), p_Quantity DECIMAL(6,2), p_QuantityType VARCHAR(5), p_Notes VARCHAR(50))

BEGIN
    INSERT INTO table
    (name, quantity, quantity_type, notes)
    VALUES
    (p_Name, p_Quantity, p_QuantityType, p_Notes);  
    COMMIT;
    END //
DELIMITER;

#PROCEDURE TO REMOVE BASED ON THE INVENTORY ITEM ID 
DELIMITER //
CREATE PROCEDURE remove
( p_Id SMALLINT(4))

BEGIN
    DELETE FROM table
        WHERE id=p_Id;

    COMMIT;
    END//
DELIMITER ;

#PROCEDURE TO EDIT BASED ON THE INVENTORY ITEM ID
DELIMITER //
CREATE PROCEDURE edit
(p_Name VARCHAR(30), p_Id SMALLINT(4))

BEGIN
    UPDATE table
        SET name=p_Name
        WHERE id=p_Id;

    COMMIT;
    END //
DELIMITER ;
4

1 に答える 1

0

予約語 (add、table) の使用を避けるか、特別な扱いをすることをお勧めします。9.3を参照してください。予約語

SQL Fiddle demo

于 2014-02-18T17:23:16.853 に答える