我现在正在学习程序(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
感谢您的帮助
答案 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 ^^
您无需担心具有相同名称的员工,您只需计算表中的行数。