检查plsql中的变量是否为null

时间:2009-12-31 06:02:46

标签: sql oracle plsql

我想检查一个变量是否为null。如果它为null,那么我想为该变量设置一个值:

//data type of var is  number 
if Var = null then
  var :=5;
endif

但我在制作错误。如何检查变量是否为空?

我使用的是oracle数据类型

8 个答案:

答案 0 :(得分:48)

if var is NULL then
  var :=5;
end if;

答案 1 :(得分:17)

使用:

IF Var IS NULL THEN
  var := 5;
ENDIF;

Oracle 9i +:

var = COALESCE(Var, 5)

其他替代方案:

var = NVL(var, 5)

参考:

答案 2 :(得分:13)

在PL / SQL中,您不能使用'='或'<>'等运算符测试NULL,因为与NULL的所有比较都会返回NULL。要将某些内容与NULL进行比较,您需要使用特殊运算符IS NULLIS NOT NULL来实现此目的。因此,而不是写

IF var = NULL THEN...

你应该写

IF VAR IS NULL THEN...

在您提供的情况下,您还可以选择使用NVL内置功能。 NVL有两个参数,第一个是变量,第二个是值(常量或计算值)。 NVL查看其第一个参数,如果发现第一个参数为NULL,则返回第二个参数。如果NVL的第一个参数不是NULL,则返回第一个参数。所以你可以重写

IF var IS NULL THEN
  var := 5;
END IF;

作为

var := NVL(var, 5);

我希望这会有所帮助。

答案 3 :(得分:4)

使用IS NULL

reference page

答案 4 :(得分:3)

答案 5 :(得分:2)

如果var为null,则使用

答案 6 :(得分:2)

永远记住要小心pl / sql条件子句中的空值,因为null永远不会更大,更小,相等或不等于任何东西。避免使用它们的最佳方法是使用nvl。

例如

declare
  i integer;
begin
  if i <> 1 then
    i:=1;
    foobar();
  end if;
end;
/

永远不要进入if子句。

这些可行。

if 1<>nvl(i,1) then
if i<> 1 or i is null then

答案 7 :(得分:2)

另一种方式:

var := coalesce (var, 5);

COALESCE是ANSI的等效(或多或少)Oracle的NVL功能。