【问题标题】:If-statement in the MySQL stored procedure for selecting dataMySQL存储过程中用于选择数据的if语句
【发布时间】:2013-07-05 09:45:04
【问题描述】:

我有下一个 SQL 代码:

DELIMITER $$

CREATE PROCEDURE `test`.`new_procedure` (queryString VARCHAR(255))
BEGIN
    SELECT @tempValue = COUNT(*) FROM test.userdata_extended WHERE inn LIKE queryString;
    IF @tempValue > 0 SELECT * FROM test.userdata_extended WHERE inn LIKE queryString;
END $$

我将COUNT* 结果放入@tempValue 变量中。 然后我试图比较它是否大于零。

我在语句比较过程中遇到错误。 MySQL 向我报告了 UNEXPECTED SELECT SYM 错误。什么意思?

这也将是对另一个表的检查。我需要 IF-ELSE 语句,因为如果一切正常,我的过程必须根据几个查询结果返回确切的代码错误值(可能不同),以便我开发的应用程序处理或提供数据。

如何解决这个问题?

谢谢

【问题讨论】:

    标签: mysql stored-procedures if-statement


    【解决方案1】:

    您忘记了 if 语句中的 THEN。您需要添加THEN

    像这样:

    IF @tempValue > 0 THEN ...your statement 
    END IF;
    

    您也忘记添加END IF; 也添加这个。

    Reference site is here.

    【讨论】:

    • 你忘了END IF;请在你的回答中添加一个小信息:)
    • 另外,你能在第二个答案的我的评论中掠夺吗?我只是不想复制,谢谢!这是关于另一种风格
    • @GeloVolro 谢谢提醒。由我也给出了参考站点。但再次感谢。
    • ideone.com/S7SGI2 可以再问一下吗?我已经完成了代码,但是 MySQL 返回的不是所有表数据,而是奇怪的结果:s24.postimg.org/dazpic2ht/Untitled.png 你能帮帮我吗?谢谢!不要生气,我是 SQL 程序的新手 :)
    • @GeloVolro 您需要将以下行重新编码为select COUNT(*) into @tempValue from 并声明上面的变量然后检查。
    【解决方案2】:

    你忘了THENEND IF;

    IF @tempValue > 0 THEN 
          SELECT * FROM test.userdata_extended WHERE inn LIKE queryString;
    END IF;
    

    【讨论】:

    • 是否可以使用类似于:SELECT IF(@tempValue > 0, *, "null") FROM test.userdata_extended WHERE inn LIKE queryString; ?
    • 你想实现什么,需要if中的所有3个条件?
    • 是的,有点像你的意思,但现在我认为这是个坏主意,不是吗?
    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    相关资源
    最近更新 更多