Помещение условия if в подзапросе во время INSERT - PullRequest
0 голосов
/ 19 мая 2018
SELECT CODE * STATUS_CODE WHERE CODE IN (.....);

Над SQL находится подзапрос, встроенный в оператор insert для определения столбца от CLOSE_CODE до 'Y' (если запрос возвращен) или 'N' (если запрос не возвращен).

Как я могу поместить в запросе что-то вроде условия IF ELSE в операторе вставки?

INSERT INTO CODE_REVIEWS (CLOSE_CODE) 
VALUES (....)

1 Ответ

0 голосов
/ 19 мая 2018

Вы можете сделать это с NVL().Перепишите запрос, чтобы он возвращал «Y», если запись существует.Выберите 'Y' из DUAL и используйте для этого EXISTS.Если такой строки не существует, результатом подзапроса будет NULL, а NVL() превратит NULL в 'N'.

NVL((SELECT 'Y'
            FROM DUAL
            WHERE EXISTS (SELECT *
                                 FROM STATUS_CODE
                                 WHERE CODE IN (....))),
    'N')

Более подробную версию, которая также будет работать вмногие другие СУБД могут использовать CASE и снова EXISTS.WHEN таких строк существует, 'Y' будет возвращено, ELSE 'N'.

CASE
  WHEN EXISTS (SELECT *
                      FROM STATUS_CODE
                      WHERE CODE IN (...))
    THEN 'Y'
  ELSE
    'N'
END
...