在Teradata存储过程中传递参数(使用循环)

时间:2017-05-09 10:10:30

标签: sql loops stored-procedures teradata

我来自Teradata报道背景和第一次构建立方体。我试图用一个主SP来填充我的事实表。 Master SP将召唤儿童SP。 Child SP就像这样 - GetData(201704)。我必须在过去13个月内调用此SP(可配置)。我已经创建了一个用rownum获取数月的表格,它会给我以下结果。

月份RowNum

201704 1

201703 2

201702 3

请在下面找到主SP的逻辑。如果有人可以帮我解决语法问题。

创建MasterSP(MonthCount)

开始

声明计数整数;

声明周期整数;

SET Count = MonthCount; --13个月

环路启动 IF(Iδ13)

SELECT Time from TimePeriod WHERE RowNum = Count

SET 的GetData(月)

计数=计数+ 1

循环结束

END

1 个答案:

答案 0 :(得分:1)

我设法创建了SP以下并且工作正常。

Replace PROCEDURE MYDB.MasterLoad( MntCnt Integer)
BEGIN
Declare MonthCount integer;
Declare IniCount integer;
Declare PeriodNum Integer;

SET IniCount =1;
SET MonthCount = MntCnt;


WHILE IniCount <= MonthCount DO
   BEGIN 

SELECT AccountingReportMonthPeriodNum into PeriodNum  FROM MYDB.Monthly_Dim_TimePeriod WHERE Rownum=IniCount; 

CAll MYDB.MthCustFact_Test(PeriodNum) ;   


SET IniCount = IniCount+1;

   END;
END WHILE;



END;