Я знаком с Sybase, который разрешает запросы с форматом: ЕСЛИ СУЩЕСТВУЕТ (), ТО, ... ИЛИ ..., КОНЕ, ЕСЛИ (или очень близко) Это мощное утверждение, которое позволяет: «если существует, то обновить, иначе вставить».
Я пишу запросы для DB2 на коробке IBM iSeries. Я видел ключевое слово CASE, но не могу заставить его работать. Я всегда получаю сообщение об ошибке: «Ключевое слово CASE не ожидается».
Пример:
IF EXISTS ( SELECT * FROM MYTABLE WHERE KEY = xxx )
THEN UPDATE MYTABLE SET VALUE = zzz WHERE KEY = xxx
ELSE INSERT INTO MYTABLE (KEY, VALUE) VALUES (xxx, zzz)
END IF
Есть ли способ сделать это против DB2 в IBM iSeries? В настоящее время я запускаю два запроса. Сначала выбор, затем мой код Java решает обновить / вставить. Я бы предпочел написать один запрос, так как мой сервер расположен далеко (через Тихий океан).