Oracle APEX 如何用PL/SQL insert/update 提交页面然后跳转到下一页

Oracle APEX How to submit page with PL/SQL insert/update and then transition to next page

我有一个 Oracle APEX 页面,它通过带有 apex_item 动态生成项目的经典报告收集数据。像这样:

select apex_item.radiogroup(qt.save_position, 1, qt.answer, null, null, null, null) col01
from   xxpay_360_questions qt
where  qt.questionnaire_id = 21

然后我使用提交按钮保存答案,该按钮使用 "Submit Page" 并从上面调用 PL/SQL 到 insert/update 动态生成的项目。像这样:

insert into xxpay_360_answers values (apex_application.g_user, APEX_APPLICATION.G_F01(1));    
commit;

我的问题是,当点击提交按钮时,我怎样才能转换到下一页动态生成的项目(因为我每页只有 50 个顶点变量可以使用)。

提交按钮只有 "Submit Page" 和 "Transition to Page" 选项,没有 "Submit Page and then Transition to Page"。

有没有一种方法可以通过 PL/SQL 作为提交代码的一部分进行转换?或者是否有页面提交后可以转换的事件?

此外,这如何处理错误以及漂亮的 "Saved" 飞越那个顶点?

您需要在后处理区域创建分支:

那么需要设置分支点:On Submit After Processing(计算、验证、处理后)分支类型为:Branch to page

然后指定您要去的页码:

最后,您可以将分支设置为仅在按下一个特定按钮并且一个特定条件的计算结果为真时触发:

我认为这可以满足您的需求。

但是如果你想用 PL/SQL 来做,你可以这样做:

将页面 ID 替换为您要将用户重定向到的实际页面 ID。

BEGIN

  IF(CONDITION)THEN

    htp.init;

    owa_util.redirect_url('f?p=&APP_ID.:10:&APP_SESSION.'); /*Replace 10 with actual Page Number*/

    apex_application.stop_apex_engine;

  ELSE

    htp.init;

    owa_util.redirect_url('f?p=&APP_ID.:20:&APP_SESSION.'); /*Replace 20 with actual Page Number*/

    apex_application.stop_apex_engine;

  END IF;

END;

或者您可以使用 APEX_UTIL.REDIRECT_URL 程序。

如果您使用的是 APEX 4.2,请参考 here.

中的 APEX_UTIL 参考

您可以使用:

apex_util.redirect_url(
 p_url => 'type your url here' 
);

这有效地调用了 owa_util。 redirect_url 并自动调用 apex_application.stop_apex_engine.