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

在Snowflake存储过程中使用SYSTEM$SEND_EMAIL发送多行表格数据问题

解决方案:将Snowflake查询结果转为美观的HTML表格邮件正文

要解决LISTAGG拼接导致的格式混乱问题,核心是利用SYSTEM$SEND_EMAIL支持HTML格式邮件的特性,把查询结果构造为HTML表格而非纯文本字符串。以下是调整后的存储过程:

修改后的存储过程代码

CREATE OR REPLACE PROCEDURE SP_SEND_EMAIL(integration_name VARCHAR, email_address_1 VARCHAR, SUBJECT VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
DECLARE
  Body VARCHAR;
BEGIN
  -- 构造HTML格式的邮件正文:生成包含表头和数据行的表格
  SELECT CONCAT(
    '<html><body>',
    '<table border="1" cellpadding="4" cellspacing="0" style="border-collapse: collapse;">',
    -- 表头部分:替换为你的9列实际名称
    '<tr><th>客户名称</th><th>平台</th><th>差异百分比</th><th>统计日期</th><th>列5</th><th>列6</th><th>列7</th><th>列8</th><th>列9</th></tr>',
    -- 数据行部分:逐行拼接HTML行标签,处理不同数据类型
    STRING_AGG(
      CONCAT(
        '<tr>',
        '<td>', COALESCE(Clientname, ''), '</td>',
        '<td>', COALESCE(Platform, ''), '</td>',
        '<td>', COALESCE(percentage_diff, 0), '% Difference</td>',
        '<td>', TO_CHAR(stat_date, 'YYYY-MM-DD HH24:MI:SS'), '</td>', -- 日期类型转格式化字符串
        '<td>', COALESCE(varchar_col, ''), '</td>',
        '<td>', COALESCE(int_col, 0), '</td>',
        '<td>', COALESCE(col7, ''), '</td>',
        '<td>', COALESCE(col8, ''), '</td>',
        '<td>', COALESCE(col9, ''), '</td>',
        '</tr>'
      ),
      '' -- 行之间无分隔符
    ),
    '</table>',
    '</body></html>'
  ) INTO Body
  FROM Nick_Alerting.Games_Spins_Degraded;

  -- 直接调用SYSTEM$SEND_EMAIL,修正原代码的语法错误
  CALL SYSTEM$SEND_EMAIL(:integration_name, :email_address_1, :SUBJECT, :Body);

  RETURN 'Email Sent Successfully';
END;
$$ ;

关键调整说明

  • HTML结构化表格:用<table>、<tr>、<th>、<td>标签构建规整表格,添加边框、内边距样式提升可读性,避免纯文本的杂乱排版
  • 数据类型适配:
    • 日期类型通过TO_CHAR转换为易读的字符串格式
    • 空值用COALESCE替换为默认值(空字符串或0),避免邮件中显示NULL
  • 语法修正:原代码中SendEmailSQL := (CALL ...)的写法错误,直接调用SYSTEM$SEND_EMAIL即可,无需额外通过EXECUTE IMMEDIATE执行

使用注意事项

  1. 确保你的Snowflake邮件集成支持HTML格式(主流邮件服务默认支持)
  2. 替换代码中的表头和列名,完全匹配Games_Spins_Degraded表的9列实际名称与数据类型
  3. 若数据量极大,可通过设置MAX_STRING_SIZE = UNLIMITED调整STRING_AGG的长度限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 20:32:36