declare
      v_temps char(100) := '';
 begin
     while (v_temps is not  null) loop
       null;
     end loop;
  end ; 执行不停止(无限循环);
  declare
     v_temps char(100) := '';
 begin
     while (v_temps!=null) loop
        null;
      end loop;
 end ;
 正常执行;服务器oracle 8.1.7, 客户端是PL/SQL进行调试

解决方案 »

  1.   

    (v_temps is not  null) 成立
    (v_temps!=null) 不成立
    三值邏輯。
      

  2.   

    你定義的是char類型的。如果你定為varchar2類型的話
    v_temps is null
      

  3.   

    是的,这是PL/SQL的语法你可以这样
       
       (v_temps is not  null) 成立
       (v_temps =‘’) 成立
      

  4.   

    在oracle和sqlserver中
    null必须用isnull,is not null来判断空 (NULL) 值表示数值未知。空值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其它数值相比均返回未知,这是因为每个空值均为未知。空值通常表示未知、不可用或将在以后添加的数据。例如,客户的中间名首字母在客户下定单时可能不知道。下面是有关空值的一些信息: 若要测试查询中的空值,请在 WHERE 子句中使用 IS NULL 或 IS NOT NULL。