"COUNT(*) "附近的语法错误?

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

我想做一个交互式的存储过程,我的意思是,在执行后,用户应该输入一个词 "COUNT(*)"。

我写了这个,但它不工作。

DELIMITER $$

DROP PROCEDURE IF EXISTS ric_forn$$
CREATE PROCEDURE  ric_forn (IN nome_forn VARCHAR(100) , OUT msg VARCHAR(100))
BEGIN
DECLARE num_rec INT;

IF (nome_forn = '') THEN 
    SET msg = "Attenzione il nome inserito non è valido !";
END IF;

SELECT COUNT (*) INTO num_rec FROM Fornitori WHERE Des_Fornitore = nome_forn;

IF num_rec = 0 THEN
    SET msg = "Nessun record trovato !";

ELSE

SELECT Id_Fornitore,Des_Fornitore,Ind_Fornitore WHERE Des_Fornitore = nome_forn;
    SET msg = "Records trovati:";

END IF;

END$$

DELIMITER ;

我得到这个错误。

你的SQL语法有错误;请检查你的MySQL服务器版本的手册,以了解'*'附近的正确语法)INTO num_rec FROM Fornitori WHERE Des_Fornitore = nome_forn。

mysql mysql-error-1064
1个回答
14
投票

之间的空格 COUNT(*) 是重要的。 你应该把它们放在一起,不要留有空格。

SELECT COUNT(*) INTO ...

例外情况是,如果你 SET SQL_MODE='IGNORE_SPACE'. 读取 功能名称解析与解析 了解更多详情。


你的另一个错误是你忘记了 FROM 在你的一个查询中的子句。

SELECT Id_Fornitore,Des_Fornitore,Ind_Fornitore WHERE Des_Fornitore = nome_forn;

应该是:

SELECT Id_Fornitore,Des_Fornitore,Ind_Fornitore FROM Fornitori
WHERE Des_Fornitore = nome_forn;
© www.soinside.com 2019 - 2024. All rights reserved.