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

Oracle Apex 实现点击按钮根据表中邮件及商品列表批量发送邮件的方法

Oracle Apex 批量发送个性化专属邮件实现方案

步骤1:确认数据表结构匹配

你可以直接使用已存储邮箱和对应商品信息的数据表,只需确认能通过邮箱字段关联到对应用户的所有商品即可,代码中可以根据你的实际表名、字段名自行调整,和你提供的示例表结构对齐即可。

步骤2:配置页面触发入口

  • 在对应页面新增一个触发按钮,按钮动作选择「触发动态动作」,可避免页面全局刷新
  • 给按钮绑定点击事件的动态动作,动作类型选择「执行PL/SQL代码」

步骤3:编写批量处理逻辑

在动态动作的PL/SQL代码输入区填入以下逻辑,你可以直接复用你已经掌握的Apex邮件发送方法替换示例中的发件部分:

DECLARE
    v_user_email VARCHAR2(255);
    v_goods_str VARCHAR2(1000);
    v_mail_content VARCHAR2(2000);
BEGIN
    -- 遍历所有需要发送通知的用户
    FOR user_item IN (
        SELECT DISTINCT email 
        FROM 你的商品表名
        -- 可自行添加筛选条件,比如仅发送未通知过的用户
        WHERE is_notified = 'N'
    ) LOOP
        -- 拼接对应用户的所有商品列表
        SELECT LISTAGG(goods_name, '、') WITHIN GROUP (ORDER BY goods_id)
        INTO v_goods_str
        FROM 你的商品表名
        WHERE email = user_item.email;
        
        -- 生成个性化邮件内容
        v_mail_content := '尊敬的'||user_item.email||',您的购物车已准备完毕,包含'||v_goods_str||'。';
        
        -- 此处替换为你已掌握的Apex Items邮件发送逻辑即可,传入对应邮箱、内容参数
        apex_mail.send(
            p_to => user_item.email,
            p_from => '官方发件邮箱@你的域名.com',
            p_subject => '购物车准备完成通知',
            p_body => v_mail_content
        );
        
        -- 可选:更新标记为已发送,避免重复推送
        UPDATE 你的商品表名
        SET is_notified = 'Y'
        WHERE email = user_item.email;
    END LOOP;
    COMMIT;
    -- 可选:返回成功提示
    apex_application.g_print_success_message := '所有通知邮件已批量发送完成';
END;

步骤4:权限校验

  • 确认当前Apex账户拥有目标数据表的查询、更新权限,以及邮件发送相关包的调用权限
  • 测试单条发送正常后再执行全量批量发送操作,避免误发

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:39:03