Я пытаюсь создать стандартный запрос UPDATE для таблицы. Однако, если определенные критерии выполнены, некоторые столбцы должны быть включены / исключены из оператора UPDATE.
Например:
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 и количество затронутых строк (rowcount), чтобы проверить, было ли обновление успешным или нет.
Как лучше всего написать этот запрос? Я предполагаю, что динамический запрос лучше, чем наличие оператора if-elsif-else, в котором весь запрос почти дублируется в каждом блоке.