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:;谢谢