Loops 在Teradata中编写一个循环
在TERADATA中执行某些宏时遇到问题。我有一个大宏,包括3个其他宏。看起来是这样的:Loops 在Teradata中编写一个循环,loops,teradata,teradata-sql-assistant,Loops,Teradata,Teradata Sql Assistant,在TERADATA中执行某些宏时遇到问题。我有一个大宏,包括3个其他宏。看起来是这样的: create MACRO D_RISK_SANDBOX.saldo_pagos(fecha_desde date, fecha_hasta date, fecha_fin_desde date, fecha_fin_hasta date) as ( exec D_RISK_SANDBOX.saldo ( :fecha_desde,:fecha_hasta); exec D_RISK_SANDBOX.pa
create MACRO D_RISK_SANDBOX.saldo_pagos(fecha_desde date, fecha_hasta date, fecha_fin_desde date, fecha_fin_hasta date)
as
(
exec D_RISK_SANDBOX.saldo ( :fecha_desde,:fecha_hasta);
exec D_RISK_SANDBOX.pagos_cuotas( :fecha_desde,:fecha_hasta,:fecha_fin_desde,:fecha_fin_hasta);
exec D_RISK_SANDBOX.pagos_refin( :fecha_desde,:fecha_hasta,:fecha_fin_desde,:fecha_fin_hasta);
)
exec D_RISK_SANDBOX.saldo_pagos('2016/08/01','2016/08/31','2016/09/01','2019/08/31')
今天,我为每个月执行大宏(D_RISK_SANDBOX.saldo_pagos)。做一个循环比较容易,但我不知道怎么做。我一直在读有关商店程序的书,但我不知道如何循环日期。
日期可以在一个数组中,因此我可以有如下内容:
(第一列是日期,其他列是每个“小”宏的结果)
常规日期循环将如下所示:
CREATE PROCEDURE proc_1 (IN date_1 date, IN date_2 DATE)
BEGIN
DECLARE DateCnt DATE;
SET DateCnt = date_1;
WHILE DateCnt <= date_2 DO
BEGIN
set DateCnt = DateCnt + 1;
END ;
END WHILE;
END;
我建议你问问自己是否真的需要一个循环。SQL通常用于集合处理。
call proc_1('2020-01-01','2020-01-07');