比如说在plsql develper或者sqlplus里执行下面一句话
select TESTPackage.Get_value(true) from dual;结果报出来如下的错误:
ORA-00904:"TRUE" :标示符无效但是函数Get_value的参数确实是一个布尔型啊,为什么不能执行呢

解决方案 »

  1.   

    select TESTPackage.Get_value('true') from dual;
      

  2.   

    我记得在java中调用存储过程是,根本就没有布尔型,只能用字符或数值型代替
      

  3.   

    布尔值是在PL/SQL里的数据类型,而不是在SQL里的。
    只能在存储过程里做逻辑判断用,而不能在SQL语句里面用,在SQL语句里你可以用0和1代替。
      

  4.   

    oracle中的布尔型,只能用Number(1)或Char(1)来替代了
      

  5.   

    实测下面的代码没有问题:CREATE PROCEDURE print_boolean (b BOOLEAN)
    AS
    BEGIN
      CASE
        WHEN b IS NULL THEN DBMS_OUTPUT.PUT_LINE('Unknown');
        WHEN b THEN DBMS_OUTPUT.PUT_LINE('Yes');
        WHEN NOT b THEN DBMS_OUTPUT.PUT_LINE('No');
      END CASE;
    END;
    /
    BEGIN
      print_boolean(TRUE);
      print_boolean(FALSE);
      print_boolean(NULL);
    END;
    /
    结果:Yes
    No
    Unknown
      

  6.   

    BOOLEAN类型也只能在PL/SQL中调用才可能使用。
    要在SQL里调用函数,的确是需要修改函数的参数类型了。