--让我们来看一下,在什么情况下会出现NULL值?
declare
type t_arr is array(3) of boolean;--声明boolean数组
b_array t_arr:=t_arr(true,false,null);--数组初始化
b_flag boolean;--运算结果值
v_str varchar2(100);--拼串结果
--函数,将boolean值转换为对应的varchar2值,在sql中不支持boolean数据类型
function TSBOOLEAN(b_flag boolean) return varchar2 is
begin
return case b_flag
when true then 'true'
when false then 'false'
else 'null'
end;
end;
begin
for k in 1..2 loop --运算符(and,or)
for i in 1..3 loop--第一个boolean值
for j in 1..3 loop--第二个boolean值
v_str:=TSBOOLEAN(b_array(i));--第一个boolean值
if k = 1 then
v_str:=v_str||' AND ';--第一个boolean值拼接运算符
b_flag:=(b_array(i) and b_array(j));--运算结果值
else
v_str:=v_str||' OR ';--第一个boolean值拼接运算符
b_flag:=(b_array(i) or b_array(j)); --运算结果值
end if;
v_str:=v_str||TSBOOLEAN(b_array(j))||' ===> '||TSBOOLEAN(b_flag);
dbms_output.put_line(v_str);
end loop;
end loop;
end loop;
end;
参考链接http://www.2cto.com/database/201302/188398.html