mysql - 创建新过程时的 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;
...
解决方案
@twicelost 我能够让程序正常工作。以下是我必须更改以使其正常工作的内容的摘要:
DELIMITER //
你在程序开始时失踪了- 您指的是
COUNT(product_id)
没有指定查询的其余部分或您想要从中获取值的表 - 你没有声明变量
products_qty
。您将其列为传递给过程的值,如果您要在过程中设置变量的值,这不是您应该做的 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 ;
如果这不是您希望您的程序执行的操作,请发布更多详细信息,说明您的程序出了什么问题以及您希望它做什么,我们将尽我们所能为您提供帮助。
希望这可以帮助!
推荐阅读
- c# - 禁用 dotnet core 中特定单元测试的 SIMD 指令集
- mongodb - 无法连接到mongodb云
- r - 从文本文件中读取特定列:R
- database - MS Access 2013 - 如何在自动更新的文本框上触发事件
- validation - 如何在 Rust 中验证用户输入并循环直到给出有效输入?
- javascript - 在 Javascript 中使用 Ipinfo.io
- android - Android Room 需要约 40 秒来执行第一个查询
- python -
() 接受 1 个位置参数,但给出了 2 个 - sql - 使用 UNION ALL 表达式 TSQL 排序 BY CASE
- python - /user/register 处的 ValueError 无法分配“('土木工程(CE)',)”:“User.department”必须是“Department”实例