在程序中选择count(*)

时间:2014-05-01 19:37:57

标签: sql stored-procedures

我创建了一个程序来搜索客户端,因此我可以控制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;

非常感谢你。

1 个答案:

答案 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
相关问题