【问题标题】:SQL LOOP Pass values from Temp Table as parameters to stored procedureSQL LOOP 将临时表中的值作为参数传递给存储过程
【发布时间】:2017-10-09 04:08:59
【问题描述】:

使用 SQL Server 2016,我有一个庞大的财务部门查询,该查询使用 @Year@FinPeriod 将交易与期间相匹配。对于报告,我们通常将单个值传递给存储过程。但现在我们需要使用通常动态生成的数据填充基础表。

请问有没有人可以帮忙的循环?我有一个临时表,其中包含年份值列和每个年份的 finperiod。我正在寻找遍历这张表 - 将年份和期间传递给存储过程,一个接一个,直到它们全部运行。

存储过程元素对我来说很好,只是让循环/传递部分工作会有所帮助。

到目前为止,我有:

 declare @fiscalyearid numeric(9)
 declare @FiscalYear numeric(9)
 declare @FiscalMonthOfYear numeric(9)
 declare @Year numeric(9)
 declare @FinPeriod numeric(9)

 if object_id('tempdb..#dateloop','u') is not null 
     drop table #dateloop

 select distinct 
     identity(int,1,1) as ID,
     FiscalYear_int, FiscalMonthOfYear 
 into 
     #dateloop 
 from 
     [DW].[DDS].[dimDate] 
 where 
     FiscalYear_int = '2018'

DECLARE C CURSOR LOCAL FAST_FORWARD FOR --
    SELECT 
        ID, FiscalYear_int, FiscalMonthOfYear 
    FROM
        #dateloop;

OPEN C;

FETCH C INTO @FiscalYear, @FiscalMonthOfYear;

WHILE @@FETCH_STATUS = 0 
BEGIN
    EXEC [dbo].[Origen_Reporting->SSRS_Capex_Monitoring_Report_Expenditure]     @Year, @FinPeriod

    FETCH C INTO @Year,@FinPeriod
END 

CLOSE C;
DEALLOCATE C; 

任何提示都会很棒。谢谢

【问题讨论】:

  • 您可以加入整个表格(其中有年份)并仅获取所需的数据..但这取决于您将如何使用它

标签: sql sql-server loops stored-procedures sql-server-2016


【解决方案1】:

我猜你希望你的光标逻辑工作。下面是可用于循环访问日期并循环调用 proc 的代码。

DECLARE C CURSOR LOCAL FAST_FORWARD FOR --
    SELECT 
        FiscalYear_int, FiscalMonthOfYear 
    FROM
        #dateloop;

OPEN C;

Fetch next  from c into @FiscalYear, @FiscalMonthOfYear

WHILE @@FETCH_STATUS = 0 
BEGIN


    select  @FiscalYear, @FiscalMonthOfYear --exec proc passing these values
    EXEC [dbo].[Origen_Reporting->SSRS_Capex_Monitoring_Report_Expenditure]     @FiscalYear, @FiscalMonthOfYear
    FETCH next from c INTO @FiscalYear,@FiscalMonthOfYear
END 

CLOSE C;
DEALLOCATE C; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多