create or replace function div(a number, b number) return number
as 
begin
  if b=0 then
  begin
   Raise_Application_error(-20001, '除数不能为0');
   return 0;
   exit;
  end;
  return (a/b);
end;

解决方案 »

  1.   

    create or replace function div(a number, b number) return number
    is
    ret number;
    begin
      begin
       ret : a/b;
      EXCEPTION
          WHEN OTHERS THEN
             Raise_Application_error(-20001, '除数不能为0');
            return -1;
      end;  
    return ret;
    end;
    /
      

  2.   

    create or replace function div(a number, b number) 
    return number
    is
    ret number;
    begin
       ret := a/b;
       return ret;
      EXCEPTION
      WHEN OTHERS THEN 
        return -1;
    end;
    /
      

  3.   

    I suggest one point as below:
       ret := cast(a/b as decimal(10,3));
      

  4.   

    to: LGQDUCKY(飘) 
    创建:
    (a number, b number) return number
    is
    ret number;
    begin
      begin
       ret:=a/b;
      EXCEPTION
          WHEN OTHERS THEN
             Raise_Application_error(-20001, '除数不能为0');
            return -1;
      end;
    return ret;
    end;运行:
    declare 
    div2 number;
    begin
    div2:=DIV(8,0);
    dbms_output.put_line(div2);
    end;出错:
    declare
    *
    ERROR 位于第 1 行:
    ORA-20001: 除数不能为0
    ORA-06512: 在"TEST.DIV", line 9
    ORA-06512: 在line 4---------------------------------------------------
    to:beckhambobo(beckham)运行成功
    但是能不能在除数为零时返回空值并打印“除数不能为0”
    ---------------------------------------------------
    to:yfjyz(dd) 便已有错误:
    行号= 11 列号= 4 错误文本= PLS-00103: 出现符号 ";"在需要下列之一时:  if 
    ---------------------------------------------------
    还要问一句Raise_Application_error(-20001, 从哪来的?
      

  5.   

    create or replace function div(a number, b number)
    return number
    is
    ret number;
    begin
      if b = 0 then
         return  0;
      end if;
       ret := a/b;
       return ret;
      EXCEPTION
      WHEN OTHERS THEN
        return -1;
    end;
    /