我正在使用Oracle Report Builder 11.1.2.2.0。我的报告中定义了很少的查询,并且当我的一个查询没有返回任何行时,我想执行一些pl / sql代码。
例如:
如果(…
您可以尝试将查询转换为 function 同 exception handling 如
function
exception handling
create of replace function get_color( i_color_id color_palette.id%type ) return color_palette.fg_color%type is o_color color_palette.fg_color%type; begin select fg_color into o_color from color_palette where id = i_color_id; return o_color; exception when no_data_found then return null; end;
并执行以下代码
if ( get_color(:id) is null ) then paint_it_to_black(); end if;
据我所知,没有办法做到这一点 - 不是简单的方式,也就是说。您必须运行相同的查询两次:一次显示结果(如果有),另一次检查该查询是否返回。
这意味着它会慢得多(当然执行相同的查询两次)。
解决方法可能是 准备 数据到一个单独的表(看你是否可以使用全局临时表)只有一次,然后
select * from that_table
或者,如果您感兴趣的查询很简单&快,只需在PL / SQL过程中使用它。您必须在多个位置维护相同的代码。看看你是否可以创建一个返回表的函数 - 这将简化事情(某种程度)。