我正在嘗試爲表創建標準的UPDATE查詢。但是,如果滿足某些條件,則應該在UPDATE語句中包含/排除某些列。在Oracle中的動態更新查詢
例如:
UPDATE TBL_PROJECT SET
REVISION_COUNT = V_REVISION_COUNT
,PRIMARY_BRANCH = IN_PRIMARY_BRANCH
,PROJECT_STATUS = IN_PROJECT_STATUS
...
WHERE PROJECT_ID = IO_PROJECT_ID
AND REVISION_COUNT = IO_REVISION_COUNT
RETURNING REVISION_COUNT INTO IO_REVISION_COUNT';
然而,表中有兩列用於提交併獲得批准。所以如果狀態設置爲提交或批准,我希望這些列進行更新。例如。
IF IN_PROJECT_STATUS = 'SUB'
UPDATE TBL_PROJECT SET
SUBMITTED_DATE = SYSDATE
ELSIF IN_PROJECT_STATUS = 'APP'
UPDATE TBL_PROJECT SET
APPROVED_DATE = SYSDATE
END;
我還需要返回受影響(行數)行REVISION_COUNT和數量,以檢查是否更新成功與否。
寫這個查詢的最好方法是什麼?我假設動態查詢比使用if-elsif-else語句更好,整個查詢幾乎都在每個塊中重複。
啊,當然。這個想法簡單得多。 – 2010-02-23 17:40:36
@Matt McCormick:它在10g上,使用'CASE'而不是'DECODE' – 2010-02-23 18:40:32