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

PostgreSQL PL/pgSQL For循环生成还款计划日期累加异常求解

问题根因
  • 循环内的还款日计算逻辑错误:每次均使用固定的初始start_date加1个月,没有累计月份增量,因此12次循环得到的还款日均为2021-02-01,不会逐月累加。
  • 冗余变量说明:你声明的due_date变量实际未参与循环内的计算,属于无效变量。
修复后的代码
DO $$ 
DECLARE
    start_date DATE := '2021-01-01';
    payment_due_date DATE;
    mon_pay_amt NUMERIC := 10;
    total_mon_amt NUMERIC := 12;
    bal_num NUMERIC :=0;
BEGIN
    bal_num := mon_pay_amt * total_mon_amt;
    payment_due_date := start_date; 
    RAISE NOTICE '12个月总待还款金额: %', to_char(bal_num, '$999.99');
    FOR i IN 1..total_mon_amt LOOP
        bal_num := bal_num - mon_pay_amt;
        -- 每次在上次还款日基础上加1个月,实现逐月累加
        payment_due_date := payment_due_date + INTERVAL '1 MONTH';
        RAISE NOTICE '第%期还款:到期日%,还款金额%,剩余待还%', 
            i, 
            payment_due_date, 
            to_char(mon_pay_amt, '$99.99'), 
            to_char(bal_num, '$999.99');
    END LOOP;
END $$;
逻辑说明
  • 初始化时直接将payment_due_date赋值为起始日期
  • 每次循环时,基于上一期的还款日加1个月,保证月份逐期累加
  • 移除了未使用的冗余变量due_date,简化代码结构
  • 调整了日志输出格式,可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:02