You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle Apex:无需提交页面,能否将客户端页面项值传递至服务端?

不用提交页面传值到服务端PL/SQL的方案

Oracle APEX自带的apex.server.process AJAX函数就能解决这个问题,不用整页提交,直接把前端选中的ROWID传给服务端PL/SQL流程。

第一步:创建AJAX回调流程

在页面的「处理」模块里新增一个AJAX回调类型的流程,命名比如PROCESS_SELECTED_ROWS,PL/SQL代码示例如下:

DECLARE
    l_selected_rowids VARCHAR2(4000);
BEGIN
    -- 获取前端传递的ROWID列表
    l_selected_rowids := apex_application.g_x01;
    
    -- 这里编写你的业务逻辑,比如批量处理选中行
    -- 用apex_string.split拆分列表可避免SQL注入风险
    FOR rec IN (
        SELECT rowid FROM emp 
        WHERE rowid IN (
            SELECT column_value FROM apex_string.split(l_selected_rowids, ',')
        )
    ) LOOP
        -- 示例操作:更新选中行状态
        UPDATE emp SET is_processed = 'Y' WHERE rowid = rec.rowid;
    END LOOP;
    
    -- 可选:给前端返回处理结果
    apex_json.open_object;
    apex_json.write('success', TRUE);
    apex_json.write('msg', '选中行处理完成');
    apex_json.close_object;
END;

第二步:修改前端JavaScript代码

把原来设置页面项的逻辑,替换为调用AJAX回调流程的代码:

var gridView = apex.region("emp").call("getCurrentView"),
    selectedRecords = gridView.getSelectedRecords(),
    idValues = "";

for (var i = 0; i < selectedRecords.length; i++) {
    var record = selectedRecords[i];
    var idValue = record[0];
    idValues += idValue;

    if (i < selectedRecords.length - 1) {
        idValues += ",";
    }
}

// 发起AJAX请求,传递ROWID列表到服务端
apex.server.process(
    "PROCESS_SELECTED_ROWS", // 对应你创建的AJAX回调流程名称
    { x01: idValues }, // 通过x01参数传值,服务端用apex_application.g_x01接收
    {
        success: function(res) {
            // 请求成功后的提示
            apex.message.showPageSuccess(res.msg);
        },
        error: function(xhr, status, err) {
            // 请求失败后的提示
            apex.message.showError('处理失败:' + err);
        }
    }
);

额外说明

  • apex.server.process会自动维护APEX会话状态,比原生XMLHttpRequest更省心,不用手动处理会话ID
  • 如果需要传递多个参数,除了用x01到x10这10个内置变量,还可以传递JSON对象,服务端用apex_json包解析即可
  • 如果你仍需要更新页面项P43_ROW_SELECT,可以保留原来的$s("P43_ROW_SELECT", idValues);代码,不影响AJAX调用

内容的提问来源于stack exchange,提问作者Gatho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:56:36