【发布时间】: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