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

如何在PostgreSQL中将受影响行数赋值给变量?

解决PostgreSQL变量赋值问题

你可以通过SELECT ... INTO语句直接将查询结果赋值给变量,修改后的代码如下:

DECLARE deletedRowCount integer;
BEGIN
    WITH deleted as 
    (
        DELETE FROM MyTable "t"
        USING tmp_closed_positions
        WHERE condition
        RETURNING "t"."Id"
    )
    SELECT COUNT(*) INTO deletedRowCount FROM deleted;
    
    -- 示例:使用变量输出结果
    RAISE NOTICE '删除的行数:%', deletedRowCount;
END;

关键说明

  • 这段逻辑必须放在BEGIN...END块内,因为PostgreSQL的变量赋值仅支持在PL/pgSQL的过程化代码块中执行。
  • SELECT COUNT(*) INTO deletedRowCount会将CTE查询得到的计数结果直接存入deletedRowCount变量。

如果你的需求只是获取删除的行数,不需要返回具体的ID,还可以用更简洁的方式,借助GET DIAGNOSTICS获取操作影响行数:

DECLARE deletedRowCount integer;
BEGIN
    DELETE FROM MyTable "t"
    USING tmp_closed_positions
    WHERE condition;
    
    GET DIAGNOSTICS deletedRowCount = ROW_COUNT;
    RAISE NOTICE '删除的行数:%', deletedRowCount;
END;

这种方式无需CTE,直接通过ROW_COUNT获取DELETE操作的受影响行数,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:54:49