Упражнения по основам PL / SQL: блок PL / SQL для описания значений NULL при неравном сравнении
Основы 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 программирования