存储过程 - 计数行

时间:2018-04-13 21:47:18

标签: mysql sql database stored-procedures

我现在正在学习程序(MySQL),我刚给自己创建了一个小项目来玩它,但是没有用。这就是我想要完成的事情:通过计算社会安全号来计算总共有多少员工,因为不止一个人可以拥有相同的名字吗?所以我创造了这个过程。 :

drop procedure if exists out_count_employees;

delimiter ^^
create procedure out_count_employees (IN Social_S_N char(9), OUT SumTotal int)
begin

    select COUNT(dno)
    into SumTotal
    from employee
    where Social_S_N = ssn;


end ^^
delimiter ;


call out_count_employees('ssn', @SumTotal);

select @SumTotal;

我看到他们使用COUNT的例子,但在这种情况下它不起作用......

表名是employee,我使用的字段是ssn,它只存储最大长度为9的int

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

where子句不应该去那里,它只计算员工人数。尝试用于:

如果存在out_count_employees,则删除程序;

delimiter ^^
create procedure out_count_employees (IN Social_S_N char(9), OUT SumTotal int)
begin

    select COUNT(*)
    into SumTotal
    from employee;    

end ^^
delimiter ;

答案 1 :(得分:0)

要获得员工总数,您不应该有WHERE子句,并且不需要Social_S_N参数。只需使用COUNT(*)

create procedure out_count_employees (OUT SumTotal int)
begin
    select COUNT(*)
    into SumTotal
    from employee;
end ^^

您无需担心具有相同名称的员工,您只需计算表中的行数。