Sybase ASE 15.7 MERGE Behavior

If you have a MERGE statement with only a DELETE action, Sybase ASE 15.7 throws the following exception:

Caused by: com.sybase.jdbc3.jdbc.SybSQLException: Incomplete MERGE statement
SQL State = ZZZZZ SQL Error Code = 3640
    at com.sybase.jdbc3.tds.Tds.a(Unknown Source)

The workaround is to add a second, “placeholder” action.

For example, the following fails:

MERGE INTO /users/composite/test/sources/mergeSyntax/sybase15/mergedb/msbe002/STATION_COPY USING /users/composite/test/sources/mergeSyntax/sybase15/mergedb/msbe002/STATION ON
(STATION_COPY.ID = STATION.ID) AND STATION.CITY='Denver' WHEN MATCHED THEN DELETE

But the following succeeds:

MERGE INTO /users/composite/test/sources/mergeSyntax/sybase15/mergedb/msbe002/STATION_COPY USING /users/composite/test/sources/mergeSyntax/sybase15/mergedb/msbe002/STATION ON (STATION_COPY.ID = STATION.ID) AND STATION.CITY='Denver'
WHEN MATCHED THEN DELETE
WHEN NOT MATCHED AND 1<>1 THEN INSERT (ID, MONTHS) VALUES (1, 2)