Mysql “计数(*)”附近的语法错误?

Mysql “计数(*)”附近的语法错误?,mysql,mysql-error-1064,Mysql,Mysql Error 1064,我想做一个交互式存储过程 我的意思是,在执行之后,用户应该键入一个单词 这是我写的,但不起作用 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 = "Atten

我想做一个交互式存储过程 我的意思是,在执行之后,用户应该键入一个单词

这是我写的,但不起作用

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服务器版本,以便使用正确的语法 在“*附近,从Fornitori进入num_rec,其中Des_Fornitore=nome_forn

COUNT和*之间的空间很重要。你应该把它们放在一起,不要留下空间

SELECT COUNT(*) INTO ...
例外情况是,如果您设置SQL\u MODE='IGNORE\u 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;

那么,是否从Fornitori中选择COUNT*INTO num_rec,其中Des_Fornitore=nome_forn;从CLI工作?我是一个初学者..CLI是什么意思?…感谢Sok抱歉,你是说从shell工作..即使我指出这一行,事情也不会顺利进行..是的,在声明适当变量的情况下自行尝试。CLI=命令行界面或从shell-它将不起作用,并且会出现相同的错误,但会导致很容易尝试COUNT*附近的语法。您是否尝试过从Fornitori设置num\u rec=SELECT COUNT*,其中Des\u Fornitore=nome\u forn;相反,正如你所说,我删除了空格,现在我得到一个不同的错误,指向->其中Des_Fornitore=nome_forn;SET msg=记录trovati:;谢谢