首页 > 解决方案 > 创建新过程时的 mySQL 语法

问题描述

我似乎无法弄清楚这里的语法错误是什么。根据我的教科书,它应该是正确的,但由于某种原因 MySQL 不喜欢它。这是代码:

...

CREATE PROCEDURE test
(
    products_qty    INT
)
BEGIN
    SET products_qty = COUNT(product_id)
IF products_qty >= 7 THEN
    SELECT 'The number of products is greater than or equal to 7';
ELSEIF products_qty < 7 THEN
    SELECT 'The number of products is less than7';
END IF;

...

标签: mysqlstored-proceduressyntax

解决方案


@twicelost 我能够让程序正常工作。以下是我必须更改以使其正常工作的内容的摘要:

  1. DELIMITER //你在程序开始时失踪了
  2. 您指的是COUNT(product_id)没有指定查询的其余部分或您想要从中获取值的表
  3. 你没有声明变量products_qty。您将其列为传递给过程的值,如果您要在过程中设置变量的值,这不是您应该做的
  4. END // DELIMITER ;您在程序结束时错过了

根据您发布的内容,我相信您希望您的程序看起来像这样:

DELIMITER //
CREATE PROCEDURE test ()
BEGIN
    DECLARE products_qty INT;
    SELECT COUNT(product_id) INTO products_qty FROM some_table;
    IF products_qty >= 7 THEN
        SELECT 'The number of products is greater than or equal to 7';
    ELSEIF products_qty < 7 THEN
        SELECT 'The number of products is less than 7';
    END IF;
END//
DELIMITER ;

这是在 db-fiddle 中模拟的过程;

如果这不是您希望您的程序执行的操作,请发布更多详细信息,说明您的程序出了什么问题以及您希望它做什么,我们将尽我们所能为您提供帮助。

希望这可以帮助!


推荐阅读