Mysql 我的脚本没有';虽然我试过不同的案子,但我还是跑不了

Mysql 我的脚本没有';虽然我试过不同的案子,但我还是跑不了,mysql,sql,Mysql,Sql,下面你们可以看到我的脚本,当尝试运行创建过程时,它总是给出语法错误,请让我知道是什么错误 在创建过程中,我尝试删除END IF前面的“;”,并尝试更改END IF的位置 CREATE TABLE IF NOT EXISTS parts ( part_no VARCHAR(18) PRIMARY KEY, description VARCHAR(40), cost DECIMAL(10 , 2 ) NOT NULL, price DECIMAL(10,2) NOT

下面你们可以看到我的脚本,当尝试运行创建过程时,它总是给出语法错误,请让我知道是什么错误

在创建过程中,我尝试删除END IF前面的“;”,并尝试更改END IF的位置

CREATE TABLE IF NOT EXISTS parts (
    part_no VARCHAR(18) PRIMARY KEY,
    description VARCHAR(40),
    cost DECIMAL(10 , 2 ) NOT NULL,
    price DECIMAL(10,2) NOT NULL
);

CREATE PROCEDURE `check_parts`(IN cost DECIMAL(10,2), IN price DECIMAL(10,2))
BEGIN
    IF cost < 0 THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'check constraint on parts.cost failed';
    END IF;

    IF price < 0 THEN
 SIGNAL SQLSTATE '45001'
 SET MESSAGE_TEXT = 'check constraint on parts.price failed';
    END IF;

    IF price < cost THEN
 SIGNAL SQLSTATE '45002'
            SET MESSAGE_TEXT = 'check constraint on parts.price & parts.cost failed';
    END IF;

END
如果不存在零件,则创建表格(
零件号VARCHAR(18)主键,
描述VARCHAR(40),
成本小数(10,2)不为空,
价格小数(10,2)不为空
);
创建“检查零件”过程(成本小数(10,2)和价格小数(10,2))
开始
如果成本<0,则
信号状态“45000”
设置消息_TEXT='检查零件上的约束。成本失败';
如果结束;
如果价格<0,则
信号状态“45001”
设置消息_TEXT='check constraint on parts.price failed';
如果结束;
如果价格<成本那么
信号状态“45002”
设置消息_TEXT='检查零件上的约束。价格和零件。成本失败';
如果结束;
结束

您只需更改delimeters,因为在编写的过程中,它将在第一个“

分隔符//
创建“检查零件”过程(成本小数(10,2)和价格小数(10,2))
开始
如果成本<0,则
信号状态“45000”
设置消息_TEXT='检查零件上的约束。成本失败';
如果结束;
如果价格<0,则
信号状态“45001”
设置消息_TEXT='check constraint on parts.price failed';
如果结束;
如果价格<成本那么
信号状态“45002”
设置消息_TEXT='检查零件上的约束。价格和零件。成本失败';
如果结束;
结束//
定界符

应该可以工作。

您只需更改delimeters,因为在编写的过程中,它将在1号停止”

分隔符//
创建“检查零件”过程(成本小数(10,2)和价格小数(10,2))
开始
如果成本<0,则
信号状态“45000”
设置消息_TEXT='检查零件上的约束。成本失败';
如果结束;
如果价格<0,则
信号状态“45001”
设置消息_TEXT='check constraint on parts.price failed';
如果结束;
如果价格<成本那么
信号状态“45002”
设置消息_TEXT='检查零件上的约束。价格和零件。成本失败';
如果结束;
结束//
定界符;

应该有用。

@LukaszSzozda感谢您的快速响应,但仍然会给出语法错误除了没有设置分隔符之外,没有语法错误。请查看@LukaszSzozda感谢您的快速响应,但仍然会给出语法错误除了没有设置分隔符之外,没有语法错误。请查看下面的错误查询执行失败原因:SQL错误[1064][42000]:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第1行“DELIMETER”附近使用的正确语法未运行,错误代码为“查询执行失败原因:SQL错误[1064][42000]:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第1行“DELIMETER not DELIMETER”附近使用的正确语法谢谢,先生,这是我的错误,但旧问题仍然存在。错误代码为“SQL错误[1064][42000]:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解下面第6行“”附近使用的正确语法。您可以看到错误查询执行失败原因:SQL错误[1064][42000]:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解第1行“DELIMETER”附近使用的正确语法未运行,错误代码为“查询执行失败原因:SQL错误[1064][42000]:您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以了解在第1行“DELIMETER not DELIMETER”附近使用的正确语法谢谢,先生,这是我的错误,但旧问题仍然存在。错误代码为“SQL错误[1064][42000]:您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解第6行“”附近使用的正确语法
DELIMITER //
CREATE PROCEDURE `check_parts`(IN cost DECIMAL(10,2), IN price DECIMAL(10,2))
BEGIN
    IF cost < 0 THEN
        SIGNAL SQLSTATE '45000'
          SET MESSAGE_TEXT = 'check constraint on parts.cost failed';
    END IF;

    IF price < 0 THEN
      SIGNAL SQLSTATE '45001'
         SET MESSAGE_TEXT = 'check constraint on parts.price failed';
    END IF;

    IF price < cost THEN
       SIGNAL SQLSTATE '45002'
         SET MESSAGE_TEXT = 'check constraint on parts.price & parts.cost failed';
    END IF;

END //
DELIMITER ;