Delimiter
を再定義する必要があります 他の何かに、例えば:$$
。これにより、パーサーは;
を無視できます。 (したがって、;
に到達したときにステートメントを実行しないでください 。- また、グッドプラクティスとして、常に
DROP PROCEDURE IF EXISTS
を使用してください。 、同じ名前のプロシージャがすでに存在する場合に失敗しないようにするため。 - 最後に、区切り文字を
;
に再定義します。
次のことを試してください:
DELIMITER $$
DROP PROCEDURE IF EXISTS `ItemsAddOrEdit` $$
CREATE PROCEDURE `ItemsAddOrEdit`(
_itm_id INT,
_itm_name VARCHAR(255),
_itm_price FLOAT(8,2)
)
BEGIN
IF _itm_id = 0 THEN
INSERT INTO items (itm_name, itm_price)
VALUES (_itm_name, _itm_price);
ELSE
UPDATE items
SET
itm_name = _itm_name,
itm_price = _itm_price
WHERE itm_id = _itm_id;
END IF;
END $$
DELIMITER ;