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

SQL存储过程嵌套循环不生效 仅返回指定年份12个月数据

问题排查与修复方案

核心问题原因

  • 月份变量未重置:第一次外循环遍历完指定年份的12个月后,@CurrentMonth的值已经累加至13,当外循环进入上一年的逻辑时,内层循环的判断条件@CurrentMonth <= 12直接不成立,因此上一年的所有数据获取逻辑都没有执行。
  • 参数定义语法错误:存储过程的入参定义部分,@YearParam nvarchar(4)后缺少逗号分隔,会直接导致存储过程创建失败。

修复后完整代码

CREATE OR ALTER PROCEDURE GetCallReport
    @YearParam nvarchar(4),
    @MonthParam nvarchar(2)
AS
--BEGIN
SET NOCOUNT ON
    DECLARE @CurrentYear INT
    DECLARE @CurrentMonth INT
    SET @CurrentYear = CAST(@YearParam AS INT)

    WHILE (@CurrentYear >= (CAST(@YearParam AS INT) -1))
    BEGIN
            -- 每次新年份循环开始时重置月份为1
            SET @CurrentMonth = 1
            WHILE (@CurrentMonth <= 12)
            BEGIN
                EXEC GetPrincipalReport @MonthParam = @CurrentMonth ,@YearParam = @CurrentYear
                Set @CurrentMonth = @CurrentMonth + 1
            END 
            Set @CurrentYear = @CurrentYear - 1
    END 
--END

--EXEC PROCEDURE
EXEC GetCallReport @YearParam = '2021'

额外优化提示

如果后续需要调整获取的月份跨度,只需要修改外循环的判断条件即可,比如要获取近3年的数据,将CAST(@YearParam AS INT) -1调整为CAST(@YearParam AS INT) -2即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 13:54:05