14:12:40 SQL> select decode(sign(3-1),1,'3>1','3<=1') from dual;DEC
---
3>1已用时间:  00: 00: 00.16
14:13:46 SQL>

解决方案 »

  1.   

    改成这个写法:
    create or replace function f_aa(aa in number,ab in number, na in number,nb in number)return number is
    begin
      if aa>ab then
        return na;
      else
        return nb;
      end if;
    end;
    select f_aa(9,10,1,2) from dual
      

  2.   

    不能用比较符号,boolean值为数字的值!
    不过你的函数可以通过decode来实现
    select decode(2,0,200,2) from dual;
    我试了一下用数值也不行,但是在测试条件是可以的,在sql里不可以!
      

  3.   

    直接用bzszp(SongZip) 兄的方法
      

  4.   

    oracle中不自持BOOLEAN,所以你的方法错误
      

  5.   

    用 decode函数罢,oracle不支持boolean数据类型
      

  6.   

    oracle版本如果Oracle9i以上可以使用case语句实现.如果在Oracle9i一下,组合sign,和decode可以实现