Teradata while循环给我"查询无效"错误,即使什么都不做

时间:2017-05-25 16:26:51

标签: sql teradata

所以我的内部更新语句运行。这里的逻辑应该规定这个循环运行一次然后结束。相反,我得到一个"查询无效"错误。当我注释掉更新时,它也会失败。

BEGIN    ---each update would only change some to BBT that were not already. We can cycle through the last 3 tech titles
    DECLARE i INT;
    SET i=1;
    WHILE i<2 DO
BEGIN

    UPDATE a
FROM DLBIFO.ML_BBT a,
 (SELECT DimFsclMthSk, hrnum, AsscId, TitlNm, caldt, 'BBT' AS ScrcrdInd   --006
FROM (
SELECT tech.*, ROW_NUMBER() OVER (PARTITION BY hrnum, DimFsclMthSk ORDER BY caldt DESC) AS num, DimFsclMthSk, caldt
FROM XBITblsV.DimEmployee tech,
 (SELECT DimDateSk, DimFsclMthSk, caldt
        FROM XBITblsV.DimDate
        WHERE DimDateSk >= 20170322
        AND DimDateSk <= 20170523) tdim
WHERE tdim.caldt >= tech.effdttm
    AND tdim.caldt < expdttm
    AND DimEmployeeSk <> -1
QUALIFY ROW_NUMBER() OVER (PARTITION BY hrnum, DimFsclMthSk ORDER BY effdttm DESC) = i
) a, 
  XBIMdmV.MdmTechOpsScrcdTitle b
WHERE a.caldt >= busstartdt AND a.caldt < COALESCE(busenddt, DATE'2099-01-01') 
AND TitlNm = b.techtitle) BBT 
SET ScrcrdInd = BBT.ScrcrdInd
WHERE a.DimFsclMthSk = bbt.DimFsclMthSk
    AND a.AsscId = bbt.AsscId      ;--006     
/*SELECT TOP 1 * FROM DLBIFO.ML_BBT;*/
SET i=i+1;      

END;
    end while;  
   END;

1 个答案:

答案 0 :(得分:0)

尝试在set i = i + 1;END之间移动END WHILE