1

HANA で手順をスクリプト化しようとしていますが、2 つのテーブルの週 ID を比較する必要があります。の場合、Week ID1 > Week ID2ID2 を持つテーブルに新しいレコードを挿入する必要があります。以下のロジックを試しましたが、うまくいきませんでした。

ここでは、 内のロジック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

コード例では、実際には :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 に答える
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 に答える