1

我正在尝试在 HANA 中编写一个过程,并且我需要比较 2 个表的周 ID。如果是Week ID1 > Week ID2,我必须将新记录插入到具有 ID2 的表中。我尝试了以下逻辑,但没有奏效。

在这里,内部的逻辑IF没有执行,尽管

VAR1 VARCHAR(2);
VAR2 VARCHAR(2);
BEGIN
    SELECT MAX(FISCAL_WK) AS VAR1 FROM "XXX"."OUTLOOK_FACTS";
    SELECT MAX(FISCAL_WK) AS VAR2 FROM "XXX"."OUTLOOK";
    IF :VAR2 > :VAR1 THEN
        SELECT MAX(OUTLOOKID) AS TEST FROM "XXX"."OUTLOOK_FACTS";
    END IF;
END;

我对此很陌生,所以请帮忙。

4

2 回答 2

0

对于该插入,您不需要任何程序代码。你可以直接用 SQL 来做:

select case 
       when max_fisc > max_fisc_fact then
           max_id_fact
       else
           -1
       end as VALUE_TO_BE_INSERTED
from (       
        select max(o.fiscal_wk) as max_fisc, max(o.outlookid) as max_id
            ,  max(f.fiscal_wk) as max_fisc_fact, max(f.outlookid) as max_id_fact
        from outlook o 
            cross join outlook_facts f);

只需将此 SQL 打包到您的 INSERT 语句中即可。- 拉斯

于 2014-12-04T15:34:26.850 回答
0

在您的代码示例中,您实际上并没有为 :VAR1 或 :VAR2 赋值,因此这两个变量都保持为空。

尝试

SELECT MAX(FISCAL_WK) AS VAR1 into :VAR1 FROM "XXX"."OUTLOOK_FACTS";
SELECT MAX(FISCAL_WK) AS VAR2 into :VAR2 FROM "XXX"."OUTLOOK";
IF :VAR2 > :VAR1 THEN
    SELECT MAX(OUTLOOKID) AS TEST FROM "XXX"."OUTLOOK_FACTS";
END IF;

但是,您也可以将所有内容打包在一条 SQL 语句中。但那是你做选择:)

于 2014-10-28T21:53:31.553 回答