кодесурса
«PL / SQL

Упражнения по основам PL / SQL: блок PL / SQL для описания значений NULL при неравном сравнении

script1adsense2code
script1adsense3code

Основы PL / SQL: упражнение 15 с решением

Напишите блок PL / SQL, чтобы описать использование значений NULL в равном сравнении, неравном сравнении и NOT NULL, равных NULL-сравнению.

В следующем примере m и n кажутся неравными. Но значения NULL являются неопределенными. M равно n неизвестно. Следовательно, условие IF дает NULL, а последовательность операторов игнорируется, аналогично o и p кажутся равными. Но, опять же, это неизвестно, поэтому условие IF возвращает NULL и последовательность операторов игнорируется, однако, если q или r равен NULL, то первый оператор IF присваивает значение r большому, а второй оператор IF - значение q к большому.

Код PL / SQL:

DECLARE
  m NUMBER := 7;
  n NUMBER := NULL;
  o NUMBER := NULL;
  p NUMBER := NULL;
  q    INTEGER := 4;
  r    INTEGER := 9;
 large INTEGER;
----------------------------------
BEGIN
  IF m != n THEN  -- yields NULL, not TRUE
    DBMS_OUTPUT.PUT_LINE('m != n');  -- not run
  ELSIF m = n THEN -- also yields NULL
    DBMS_OUTPUT.PUT_LINE('m = n');
  ELSE
    DBMS_OUTPUT.PUT_LINE
      ('Can not say whether m and n are equal or not.');
  END IF;
-----------------------------------
  IF o = p THEN  -- yields NULL, not TRUE
    DBMS_OUTPUT.PUT_LINE('o = p');  -- not run
  ELSIF o != p THEN  -- yields NULL, not TRUE
    DBMS_OUTPUT.PUT_LINE('o != p');  -- not run
  ELSE
    DBMS_OUTPUT.PUT_LINE('Can not say whether two NULLs are equal');
  END IF;
--------------------------------------
  IF (q > r)       -- If q or r is NULL, then (q > r) is NULL
    THEN large  := q;  -- run if (q > r) is TRUE
    ELSE large  := r;  -- run if (q > r) is FALSE or NULL
DBMS_OUTPUT.PUT_LINE('The value of large : '||large);
  END IF;
  
  IF NOT (q > r)   -- If q or r is NULL, then NOT (q > r) is NULL
    THEN large  := r;  -- run if NOT (q > r) is TRUE
    ELSE large  := q;  -- run if NOT (q > r) is FALSE or NULL
DBMS_OUTPUT.PUT_LINE('The value of large : '||large);
  END IF;
END;
/

Пример вывода:

 Не могу сказать, равны ли m и n или нет.
Не могу сказать, равны ли два значения NULL
Значение большое: 9
Заявление обработано.
0,00 секунд

Блок - схема:

«Блок-схема:

Улучшите этот пример решения и опубликуйте свой код через Disqus

Предыдущий: Напишите блок PL / SQL, чтобы создать процедуру, используя «IS [NOT] NULL Operator» и оператор show NOT возвращает противоположность своего операнда, если операнд не равен NULL.
Далее: Напишите блок PL / SQL, чтобы описать использование оператора LIKE, включая символы подстановки и escape-символы.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code