変数がnullかどうかを確認したい。 nullの場合、その変数に値を設定します。
//data type of var is number
if Var = null then
var :=5;
endif
しかし、エラーが発生しています。変数がnullかどうかを確認するにはどうすればよいですか?
Oracleデータ型を使用しています
if var is NULL then
var :=5;
end if;
つかいます:
IF Var IS NULL THEN
var := 5;
ENDIF;
Oracle 9i +:
var = COALESCE(Var, 5)
他の選択肢:
var = NVL(var, 5)
参照:
PL/SQLでは、NULL
とのすべての比較がNULL
を返すため、 '='や '<>'などの演算子を使用してNULL
をテストすることはできません。何かをNULL
と比較するには、まさにこの目的のためにある特別な演算子IS NULL
またはIS NOT NULL
を使用する必要があります。したがって、書く代わりに
IF var = NULL THEN...
あなたは書くべきです
IF VAR IS NULL THEN...
指定した場合、NVL
組み込み関数を使用するオプションもあります。 NVL
は2つの引数を取ります。1つ目は変数で、2つ目は値(定数または計算)です。 NVL
は最初の引数を調べ、最初の引数がNULL
であることがわかると、2番目の引数を返します。 NVL
の最初の引数がNULL
でない場合、最初の引数が返されます。だからあなたは書き直すことができます
IF var IS NULL THEN
var := 5;
END IF;
として
var := NVL(var, 5);
これがお役に立てば幸いです。
IS NULLを使用
別の方法:
var := coalesce (var, 5);
COALESCEは、OracleのNVL関数のANSI相当(多かれ少なかれ)です。
NULLは決して大きく、小さく、等しく、等しくないため、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
varがnullの場合に使用