我创建了一个程序来搜索客户端,因此我可以控制invalidad ID。一旦我完成它,我意识到我应该认为客户端表可能是空的,所以我决定在我的程序中放入一个SELECT COUNT(*)。
但它不起作用......
CREATE PROCEDURE search_client (id_client int)
BEGIN
DECLARE min_id int;
DECLARE max_id int;
**DECLARE total int;**
SET min_id=(select min(id) from clients);
SET max_id=(select min(id) from clients);
**SELECT count(*) from clients into total;**
**if(total=0)
then signal sqlstate '45000' set message_text='Error. Database is empty';**
if(id_client<min_id or id_client > max_id)
then signal sqlstate '45000' set message_text='Error. Client not found';
else
SELECT * FROM CLIENTS WHERE ID=ID_CLIENT;
END IF;
END
编辑1
SET total=(select COUNT(*) FROM clientes);
&#34;#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在&#39;&#39;附近使用的正确语法。在第22行&#34;
非常感谢你。
答案 0 :(得分:0)
我发现了错误,我正要自杀。计数没什么,我只需要一个elseif
if(total=0)
then signal sqlstate '45000' set message_text='Error. Database is empty';**
**elseif**(id_client<min_id or id_client > max_id)
then signal sqlstate '45000' set message_text='Error. Client not found';
else
SELECT * FROM CLIENTS WHERE ID=ID_CLIENT;
END IF;
END