我想做一个交互式的存储过程,我的意思是,在执行后,用户应该输入一个词 "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。
之间的空格 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;