Database PLS 00306错误PL/SQL

Database PLS 00306错误PL/SQL,database,plsql,Database,Plsql,我使用SQL*PLUS运行此代码 DECLARE v_sal NUMBER:= 3000; v_valid BOOLEAN; BEGIN v_valid := v_sal BETWEEN 1000 AND 5000; DBMS_OUTPUT.PUT_LINE('Value of v_valid is ' || v_valid); END; / 我读到我可以用这个表达式来分配布尔值。 为什么我会在第6行出现这个错误 我认为问题不在表达式之间。这是DBMS_输出行。它不能处理布尔值。以下代码起作用

我使用SQL*PLUS运行此代码

DECLARE
v_sal NUMBER:= 3000;
v_valid BOOLEAN;
BEGIN
v_valid := v_sal BETWEEN 1000 AND 5000;
DBMS_OUTPUT.PUT_LINE('Value of v_valid is ' || v_valid);
END;
/
我读到我可以用这个表达式来分配布尔值。
为什么我会在第6行出现这个错误

我认为问题不在表达式之间。这是DBMS_输出行。它不能处理布尔值。以下代码起作用:

set serveroutput on

DECLARE
  v_sal NUMBER:= 3000;
  v_valid BOOLEAN;
BEGIN
  v_valid := v_sal BETWEEN 1000 AND 5000;
  dbms_output.put_line(CASE WHEN v_valid THEN 'true' ELSE 'false' END);
END;
/

最好在
CASE
表达式中包含
null
检查条件,因为如果
v_sal
恰好是
null
v_valid
也是
null
CASE
表达式将给出
false
,这是错误的答案。