创建存储过程ProSumSalary,针对scott模式下的emp表,完成给定部门编号deptno后(输入参数),控制台输出该部门的所有员工的工资总和。注意:(1)当emp表中存在给定部门员工时,统计该部门的所有员工工资和,并在控制台打印输出以下格式:部门编号为%deptno%的员工工资总和为:%工资总和%;(2)当emp表中不存在该部门编号时,控制台打印输出以下格式:编号为%deptno%的部门不存在,请重新输入!
时间: 2024-03-08 17:49:34 浏览: 43
好的,根据您的要求,我已经创建了如下存储过程ProSumSalary,可以实现您所需的功能:
```sql
CREATE OR REPLACE PROCEDURE ProSumSalary(deptno IN NUMBER)
IS
total_salary NUMBER;
BEGIN
SELECT SUM(sal) INTO total_salary FROM emp WHERE deptno = ProSumSalary.deptno;
IF total_salary IS NULL THEN
DBMS_OUTPUT.PUT_LINE('编号为' || deptno || '的部门不存在,请重新输入!');
ELSE
DBMS_OUTPUT.PUT_LINE('部门编号为' || deptno || '的员工工资总和为:' || total_salary);
END IF;
END;
```
该存储过程接收一个输入参数deptno,表示要查询的部门编号。首先,使用SELECT SUM()语句查询该部门所有员工的工资总和,并将结果赋值给变量total_salary。然后,判断total_salary是否为空,如果为空,则说明该部门不存在,输出提示信息;否则,输出查询结果。
您可以通过执行以下代码来测试该存储过程:
```sql
DECLARE
deptno NUMBER := 20;
BEGIN
ProSumSalary(deptno);
END;
```
上述代码将查询编号为20的部门的员工工资总和。您可以根据需要修改deptno的值进行测试。
阅读全文