【问题标题】:Error while creating a procedure mysql CRUD创建过程mysql CRUD时出错
【发布时间】:2018-10-05 18:54:40
【问题描述】:

我在第 9 行不断收到语法错误

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

变量是问题吗?我检查了表格,看看我是否把名字弄乱了,但对我来说一切都很好。 这是表格代码

CREATE TABLE `items` (
`itm_id` INT(255) NOT NULL AUTO_INCREMENT,
`itm_name` VARCHAR(255) NOT NULL,
`itm_price` FLOAT(8,2) NOT NULL,
PRIMARY KEY (`itm_id`),
UNIQUE INDEX `itm_name` (`itm_name`)
)

【问题讨论】:

    标签: mysql crud procedure


    【解决方案1】:
    • 您需要将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 ;
    

    【讨论】:

    • 干杯伙伴!就像一个魅力,从来不知道你必须手动让解析器读过去;
    • @JimmyNeutron 乐于提供帮助 :)
    猜你喜欢
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2018-11-21
    • 2015-06-19
    相关资源
    最近更新 更多