Я пытаюсь создать стандартный запрос 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 и количество затронутых строк (ROWCOUNT), чтобы проверить, если обновление было успешным или нет.
Каков наилучший способ написать этот запрос? Я предполагаю, что динамический запрос лучше, чем наличие инструкции if-elsif-else, причем весь запрос почти дублируется в каждом блоке.
Ах, конечно. Эта идея намного проще. –
@Matt McCormick: он на 10g, используйте 'CASE' вместо' DECODE' –