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

时间:2011-09-22 21:18:44

标签: mysql

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

我写了这个,但它不起作用..

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;

1 个答案:

答案 0 :(得分:9)

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

SELECT COUNT(*) INTO ...

例外情况是SET SQL_MODE='IGNORE_SPACE'。请阅读Function Name Parsing and Resolution了解详情。


您的其他错误是您在其中一个查询中忘记了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;