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