IT序号网

oracle之如何比较PLSQL中的空值

mate10pro 2025年01月19日 编程语言 6 0

下面是我的代码。

一个变量没有值(value)。另一个变量有一个值。在下面的代码中,我想打印变量是 即使在 var1 没有任何值的情况下也不相同。我该怎么做?

CREATE OR REPLACE PACKAGE BODY mypackagebody IS 
 
 PROCEDURE comparenull() IS 
  l_var1 mytable.mycolumn1%TYPE; 
  l_var2 mytable.mycolumn2%TYPE; 
 
 BEGIN 
  BEGIN 
   SELECT var1 
         ,var2 
   INTO   l_var1 
         ,l_var2 
   FROM   mytable; 
  EXCEPTION 
   WHEN no_data_found THEN 
    var1 := NULL; 
    var2 := NULL; 
  END; 
 
  /* At this point var1 is NOT having any value and var2 is having a value.*/ 
  /* The below if condition is returing false. But, I wanted to go inside the if condition and print that the var values are not same*/ 
  IF var1 <> var2 
  THEN 
   dbms_ouput.put_line('var1 and var2 are not same'); 
 
  END IF; 
 
 END comparenull; 
 
END mypackagebody; 

请您参考如下方法:

我认为您需要一个NULL 安全比较。在 Oracle 中,您可以使用多个条件:

IF var1 <> var2 OR 
   (var1 is null and var2 is not null) OR 
   (var1 is not null and var2 is null) 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!