MERGE文で、UPDATE と INSERT の処理をしたい。
MERGE文の USING は、セレクトの結果しか無理なのでしょうか?
※2つのテーブルでのお話?
行いたいことは、そのテーブルに部員コードが存在した場合は、部員の年齢を更新。
存在しない場合は、部員の情報を挿入。
パラメータBUINCDが、存在するかしないかで処理を分けたいのですが、
この場合は、MERGE 文では無理なのでしょうか?
よろしくお願いします。
下記のソースですと、count(*)で無理やりしようとして [SQL0580] となってます。
該当のソースコード
int mergeSCBUIN( @Param("BUINCD") int BUINCD, @Param("BUINNM") String BUINNM, @Param("BUINAG") int BUINAG ); --------------------------------------------- <update id="mergeSCBUIN"> MERGE INTO SCBUINTB A USING (SELECT CASE WHEN COUNT(*)=0 then #{BUINCD} ELSE #{BUINCD} END COUNT) AS BUINCD FROM SCBUINTB WHERE BUINCD=#{BUINCD} ) B ON ( A.BUINCD = B.BUINCD ) WHEN MATCHED THEN UPDATE SET BUINAG=#{BUINAG} WHEN NOT MATCHED THEN INSERT( BUINCD, BUINNM, BUINAG ) VALUES( #{BUINCD}, #{BUINNM}, #{BUINAG} ) </update>
試したこと
補足情報(FW/ツールのバージョンなど)
STS4
JDK11
DB2
回答1件
あなたの回答
tips
プレビュー