Просто к вашему сведению. Я не написал серьезных Oracle в течение пары лет, но этот вопрос напомнил мне функцию, которую я выполняю. Это было очень удобная отладка без интерактивного отладчика. Думал, что поделюсь этим.
create or replace function boolean_to_text(test_in boolean)
return varchar2
is
begin
return case when test_in then 'true'
when not test_in then 'false'
else 'null'
end ;
end boolean_to_text;
Где "test_in" - любое логическое выражение. Это работает, потому что выражение вычисляется до вызова функции. К сожалению, поскольку Oracle еще не поддерживает логический тип данных в SQL, его можно использовать только в pl sql.
-- tests
begin
dbms_output.put_line( '1=1 is ' || boolean_to_text(1=1) );
dbms_output.put_line( '1=0 is ' || boolean_to_text(1=0) );
dbms_output.put_line( 'a>b is ' || boolean_to_text('a'>'b'));
dbms_output.put_line( 'True>False ' || boolean_to_text(true>false) );
dbms_output.put_line( 'Sysdate> 2020-05-18 is ' || boolean_to_text(Sysdate> date '2020-05-18') );
dbms_output.put_line( 'Null=Null is ' || boolean_to_text(null=null) );
end;