О, только после прочтения других ответов, я понял, что этот вопрос был о. Я решил также сохранить свой первоначальный ответ, поскольку точка в выражении символа в if-statement по-прежнему правильная.
Другие ответы верны, что создание логики, основанной на оценке строк с динамическим PL/SQL, не является хорошей идеей в целом. Они также представляют правильные решения, но ИМХО еще лучше подходит.
Обычно, когда у меня есть несколько условий в PL/SQL, я даю условия имени. См. Пример ниже, иллюстрирующий эту технику. Эти имена делают код самодокументированным и значительно улучшают читаемость кода, так как очень часто условие теперь читается как человеческий язык.
declare
v_volume number := 0;
v_weight number := 1;
v_weight_limit constant number := 10;
v_volume_limit constant number := 10;
v_has_volume constant boolean := v_volume > 0;
v_exceed_weight_limit constant boolean := v_weight > v_weight_limit;
v_exceed_volume_limit constant boolean := v_volume > v_volume_limit;
begin
-- no guarantee the logic is the same than in question
-- but just illustrates the coding style
if v_has_volume
and v_exceed_weight_limit
and v_exceed_volume_limit
then
null; -- something
else
null; -- something else
end if;
end;
/