检查plsql中的变量是否为null

use*_*541 29 sql oracle plsql

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

//data type of var is  number 
if Var = null then
  var :=5;
endif
Run Code Online (Sandbox Code Playgroud)

但我发现错误.如何检查变量是否为空?

我正在使用oracle数据类型

Pri*_*ank 54

if var is NULL then
  var :=5;
end if;
Run Code Online (Sandbox Code Playgroud)


OMG*_*ies 18

使用:

IF Var IS NULL THEN
  var := 5;
ENDIF;
Run Code Online (Sandbox Code Playgroud)

Oracle 9i +:

var = COALESCE(Var, 5)
Run Code Online (Sandbox Code Playgroud)

其他替代品:

var = NVL(var, 5)
Run Code Online (Sandbox Code Playgroud)

参考:


Bob*_*ica 15

在PL/SQL中,您不能使用诸如'='或'<>'之类的运算符来测试,NULL因为所有比较都要NULL返回NULL.要比较某些东西,NULL你需要使用特殊的操作符,IS NULL或者IS NOT NULL正是为了这个目的.因此,而不是写作

IF var = NULL THEN...
Run Code Online (Sandbox Code Playgroud)

你应该写

IF VAR IS NULL THEN...
Run Code Online (Sandbox Code Playgroud)

在您给出的情况下,您也可以选择使用NVL内置功能. NVL接受两个参数,第一个是变量,第二个是值(常量或计算). NVL查看它的第一个参数,如果它发现第一个参数是NULL,则返回第二个参数.如果第一个参数NVL不是NULL,则返回第一个参数.所以你可以改写

IF var IS NULL THEN
  var := 5;
END IF;
Run Code Online (Sandbox Code Playgroud)

var := NVL(var, 5);
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.

  • 我等了5年才告诉你这个,但谢谢你的回答. (3认同)