创建一个程序LE_P6,该程序接受表示部门编号的单个数字输入参数p_deptno,对该特定部门的所有员工的工资求和,然后将该信息输出到屏幕。要处理输入的p_deptno不存在的情况,请测试um是否为null。如果sum为null,则引发用户定义的异常并向屏幕输出指示已发生错误的消息。此外,使用以下情况测试程序并包括输出。
p_deptno是10
p_deptno是50
set serveroutput on
CREATE OR REPLACE PROCEDURE LE_P6 (
p_deptno dept.deptno%TYPE,
p_sal emp.sal%TYPE) IS
null_salary EXCEPTION;
PRAGMA EXCEPTION_INIT(null_salary, -20101);
BEGIN
select SUM(SAL)
Into p_sal
from emp;
EXCEPTION
WHEN null_salary THEN
DBMS.OUTPUT_PUT.LINE ('Salary cannot be null');
End LE_P6;
答案 0 :(得分:1)
您只需要一个参数而不是两个参数,并且DBMS_OUTPUT
包名称中存在拼写错误。尝试:
CREATE OR REPLACE PROCEDURE LE_P6 (
p_deptno dept.deptno%TYPE) IS
null_salary EXCEPTION;
p_sal number;
PRAGMA EXCEPTION_INIT(null_salary, -20101);
BEGIN
select SUM(SAL)
Into p_sal
from emp
where deptno = p_deptno;
DBMS_OUTPUT.PUT_LINE (p_sal);
EXCEPTION
WHEN null_salary THEN
DBMS_OUTPUT.PUT_LINE ('Salary cannot be null');
End LE_P6;