2017-08-28 140 views
1

我试图用动态操作显示成功/错误消息,但没有任何显示。Oracle APEX:如何在动态操作中显示错误消息

这是我为我的行为的真实情况的代码。

declare 
    v_complete number; 
begin 
select count(task_status) into v_complete from IT_TASK where TASK_STATUS != 3 AND REQUEST_ID = :P32_ID ; 

if v_complete > 0 then 
    apex_application.g_print_success_message := '<span style="color:red">Not all Task are complete!</span>'; 
    rollback; 
end if; 

if v_complete = 0 then 
    apex_application.g_print_success_message := '<span style="color:green">All Task are complete!</span>'; 
    rollback; 
end if; 
end; 

然而,我的条件得到满足后不会出现任何消​​息。 谁能告诉我为什么?

+0

你试过管理异常时需要初始化v_complete为0?有可能这是抛出一个异常,所以不要进入任何消息条件。 –

+0

我不相信使用g_print_success_message是受支持的,在这种情况下也不相关。也许使用通知插件。 – Scott

回答

-1

在sqlplus或sqldeveloper中运行查询并查看结果。用不同的消息为v_complete < 0添加第三个条件。此外,打开调试,看看它是否达到了真实的情况。另外,最佳做法是避免将匿名PL/SQL块放入APEX应用程序中。这应该存储在一个函数中,并被调用来增强重用和维护。

1

apex_application.g_print_success_message仅在渲染页面时由Apex引擎使用 - 页面渲染后,任何改变它的动态操作都将不起作用。

您可能实现目标的一种简单方法是在页面上添加仅显示内容的项目,例如, P1_RESULT,并在您的动态行动中设定其价值。您的动态操作还可以根据需要显示和/或隐藏显示项目。

0

你宣布

declare 
    v_complete number := 0; 
begin.. 
.......