[创建新过程时的mySQL语法

问题描述 投票:-1回答:1

我似乎无法弄清楚什么是语法错误。根据我的教科书,它应该是正确的,但是由于某种原因,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;

...

mysql stored-procedures syntax
1个回答
0
投票

@@ twicelost,我能够使该程序正常工作。这是我必须更改才能使其正常工作的总结:

  1. 您在程序开始时缺少DELIMITER //
  2. 您指的是COUNT(product_id),但未指定其余查询或您想要从中获取值的表
  3. 您未声明变量products_qty。您将其列出为传递给过程的值,如果要在过程内部设置变量的值,则不应该这样做]
  4. 在过程结束时您缺少END // DELIMITER ;
  5. 根据您发布的内容,我相信您希望此过程看起来像这样:

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 ;

Here is the procedure mocked up in db-fiddle;

如果这不是您希望您执行的过程,请发布更多有关您的过程有什么问题以及您希望执行的操作的详细信息,我们将尽最大努力为您提供帮助。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.