Что делает null в хранимой процедуре?

Итак, я просматриваю небольшой код в хранимой процедуре Oracle (PLSQL) и наткнулся на то, чего не понимаю.

  if lv_var1= ' ' then
     null;
  else
     begin.....

Это просто строка с надписью ноль

Что он делает (во всяком случае).

Я предполагаю, что он существует вне всей процедуры, но я не могу найти о нем никакой информации.

Это Заявление NULL.

Jeroen Mostert 11.04.2018 12:28

На самом деле это просто означает «ничего не делать». Это может быть полезно на этапе разработки (вы можете проверить свой код, скомпилированный до того, как закодируете логику во всех ветвях вашего оператора IF), а также он может быть полезен в качестве указателя на то, что вы признаете, что условие возможно, но вы хотите не работай

Christian Palmer 11.04.2018 12:30
0
2
33
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ничего не делает. В PLSQL у вас не может быть пустого условия, выполнение чего-то вроде этого просто не будет компилироваться:

if lv_var1= ' ' then
  --do nothing
else
    begin.....`

Имея там null, условие не является пустым, поэтому процедура компилируется, но ничего не происходит, если эта ветвь когда-либо будет достигнута.

Вероятно, это можно было бы написать так:

if lv_var1 != ' ' then
  begin...
end if;

Изменить: как правильно указал Boneist, приведенная выше альтернатива не учитывает нулевые значения, это можно сделать либо с помощью nvl, например. nvl(lv_var1,'empty') != ' ' или состояние OR, например lv_var1 != ' ' OR lv_var1 IS NULL

Его можно было переписать во второй форме, только если lv_var1 не равно нулю. Вам нужно будет изменить его, чтобы включить нули (скорее всего, через NVL).

Boneist 11.04.2018 12:45

Пожалуйста. Иногда это полезно исключительно с информационной точки зрения. Как правильно указал Бонеист, альтернатива, которую я предложил, не сработала бы, если бы значение было нулевым, поэтому ответ был обновлен соответствующим образом.

Chrisrs2292 11.04.2018 13:05

Другие вопросы по теме