sql >> Databáze >  >> RDS >> Oracle

Vyhodnocení PL/SQL booleovských proměnných v Oracle Forms

Můžeme to otestovat v SQLPlus, abychom viděli, co se stane v každé ze 3 situací (true, false, null):

set serveroutput on

declare
  true_value boolean := true;
  false_value boolean := false;
  null_value boolean;
begin

    if not true_value then  --Should not pass
      dbms_output.put_line('True Value');
    end if;

    if not false_value then --Should pass
      dbms_output.put_line('False Value');
    end if;

    if null_value is null then --Just to make sure it is null
      dbms_output.put_line('Null Value is Null');
    end if;

    if not null_value then --Should not pass
      dbms_output.put_line('Null Value');
    end if;
end;
/

Což produkuje:

SQL> set serveroutput on
SQL>
SQL> declare
  2    true_value boolean := true;
  3    false_value boolean := false;
  4    null_value boolean;
  5  begin
  6
  7      if not true_value then  --Should not pass
  8        dbms_output.put_line('True Value');
  9      end if;
 10
 11      if not false_value then --Should pass
 12        dbms_output.put_line('False Value');
 13      end if;
 14
 15      if null_value is null then --Just to make sure it is null
 16        dbms_output.put_line('Null Value is Null');
 17      end if;
 18
 19      if not null_value then --Should not pass
 20        dbms_output.put_line('Null Value');
 21      end if;
 22  end;
 23  /
False Value
Null Value is Null

PL/SQL procedure successfully completed.

SQL>

Jedinou možnou cestou kódu, která může produkovat váš očekávaný výstup, je tedy hodnota false. Pokud to není to, co vidíte nebo očekáváte, pak se ve vašem postupu musí stát něco jiného nebo jako vedlejší účinek.



  1. Kompilace MySQL Connector s Visual Studio 2015 Win64

  2. Vytváření asociativního pole na úrovni balíčku v jazyce Java

  3. Jak navrhnout MySql tabulku pro Tag Cloud?

  4. SQL:Výjimka z jinak seřazené sady výsledků