无法显示Pl / Sql异常输出

时间:2015-12-09 20:29:35

标签: oracle stored-procedures plsql exception-handling

我正在处理Pl / sql过程,无法显示异常错误消息。我能够显示不引发异常的正确值。代码

create or replace procedure proc(p_empNo in costs.empNo%type)
is    
  sumCost number;
  noNumber exception;
  pragma exception_init(noNumber, -20001);
begin

  select sum(cost) into sumCost
    from costs
   where empNo = p_empNo;

  if sumCost <= 0 then
    raise_application_error(-20001, 'no matching number');
  else
    dbms_output.put_line(sumCost);
  end if;

  exception when noNum then
    dbms_output.put_line(sqlerrm);
end proc;

基本上我正在尝试为所有具有相同编号的员工求和。如果没有匹配的员工

2 个答案:

答案 0 :(得分:2)

如果您的员工不存在,则总和(成本)将返回null,因此在您的测试中不会被捕获

if sumCost <= 0 then

因为null不是&lt; = 0。 null不是满足此类测试的数字。

解决方案:

if NVL(sumCost,0) <= 0 then

答案 1 :(得分:0)

使用

SET SERVEROUTPUT ON

命令显示dbms_output结果。

在SQLDeveloper中,您可以在菜单View / DBMS Output中打开serveroutout,然后在DBMS输出窗口中单击green plus以创建子窗口以连接您需要的内容。