kev*_*rpe 3 db2 syntax if-statement exists ibm-midrange
我熟悉Sybase,它允许使用以下格式进行查询:IF EXISTS () THEN ... ELSE ... END IF(或非常接近)。这是一个强大的语句,允许:“如果存在,则更新,否则插入”。
我正在 IBM iSeries 机器上编写 DB2 查询。我已经看到了 CASE 关键字,但我无法使其工作。我总是收到错误:“不需要关键字 CASE。”
样本:
如果存在(从 MYTABLE WHERE KEY = xxx 中选择 *) 然后更新 MYTABLE 设置值 = zzz WHERE KEY = xxx 否则插入 MYTABLE (KEY, VALUE) VALUES (xxx, zzz) 万一
有没有办法针对 IBM iSeries 上的 DB2 执行此操作?目前,我运行两个查询。首先是选择,然后我的 Java 代码决定更新/插入。我宁愿编写一个查询,因为我的服务器位于很远的地方(横跨太平洋)。
+更新+
DB2 for i,从版本 7.1 开始,现在有一个MERGE语句可以满足您的需求。
>>-MERGE INTO--+-table-name-+--+--------------------+----------->
'-view-name--' '-correlation-clause-'
>--USING--table-reference--ON--search-condition----------------->
.------------------------------------------------------------------------.
V |
>----WHEN--+-----+--MATCHED--+----------------+--THEN--+-update-operation-+-+----->
'-NOT-' '-AND--condition-' +-delete-operation-+
+-insert-operation-+
'-signal-statement-'
Run Code Online (Sandbox Code Playgroud)
请参阅IBM i 7.1 InfoCenter DB2 MERGE 语句参考页