比如说在plsql develper或者sqlplus里执行下面一句话
select TESTPackage.Get_value(true) from dual;结果报出来如下的错误:
ORA-00904:"TRUE" :标示符无效但是函数Get_value的参数确实是一个布尔型啊,为什么不能执行呢
select TESTPackage.Get_value(true) from dual;结果报出来如下的错误:
ORA-00904:"TRUE" :标示符无效但是函数Get_value的参数确实是一个布尔型啊,为什么不能执行呢
只能在存储过程里做逻辑判断用,而不能在SQL语句里面用,在SQL语句里你可以用0和1代替。
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
要在SQL里调用函数,的确是需要修改函数的参数类型了。