代码之家  ›  专栏  ›  技术社区  ›  Superdooperhero

Oracle APEX如何提交带有PL/SQL插入/更新的页面,然后转换到下一页

  •  1
  • Superdooperhero  · 技术社区  · 10 年前

    我有一个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
    

    然后,我使用提交按钮保存答案,该按钮使用“提交页面”并调用PL/SQL插入/更新上面动态生成的项目。类似于:

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

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

    提交按钮只有“提交页面”和“转换到页面”选项,而没有“提交页面然后转换到页面。”。

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

    还有,这是如何处理错误和漂亮的“保存”飞越顶点的?

    2 回复  |  直到 10 年前
        1
  •  6
  •   Drumbeg    10 年前

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

    enter image description here

    然后需要设置为分支点: 处理后提交(计算、验证和处理后) 分支类型为: 分支到页面

    enter image description here

    然后指定您要去的页码:

    enter image description here

    最后,您可以将分支设置为仅在按下一个特定按钮且某个特定条件求值为true时才触发:

    enter image description here

    我想这能满足你的需求。

    但如果你想用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 程序

        2
  •  1
  •   D777Stack    9 年前

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

    您可以使用:

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

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