sql >> Database teknologi >  >> RDS >> Oracle

Evaluering af PL/SQL booleske variable i Oracle Forms

Vi kan teste dette i SQLPlus for at se, hvad der sker i hver af de 3 situationer (sand, falsk, 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;
/

Som producerer:

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>

Så den eneste mulige kodesti, der kan producere dit forventede output, er, hvis værdien, der går ind i den betingede, er falsk. Hvis det ikke er det, du ser eller forventer, må der ske noget andet i din procedure eller som en bivirkning.



  1. SQL Server:fascineret af GETDATE()

  2. Humaniseret eller naturlig nummersortering af blandede ord-og-tal-strenge

  3. Sådan opretter du en primær nøgle i SQL Server (T-SQL eksempler)

  4. Lukning af JDBC-forbindelser i pool