0

我的查询看起来像这样

MERGE dbo.myTable AS myt
USING (SELECT ? AS ID,
       ? AS Value) AS s
ON (s.id = myt.id)
WHEN MATCHED THEN
    UPDATE SET myt.ApprovalUserId = s.ApprovalUserId
WHEN NOT MATCHED THEN
    INSERT ( Value )
    VALUES  ( s.Value)
OUTPUT INSERTED.id;

我的java代码看起来像这样

jdbcTemplate.queryForInt(SQL, id, value);

但是当我尝试跑步时,我得到了

java.sql.SQLException: The executeQuery method must return a result set.

我想以某种方式提取合并“INSERTED.id”给出的 ID。是否有我应该查看的 JDBCTemplate 方法?还是我应该放弃合并,只使用选择、更新和锁定来执行此操作?

我正在使用 Sql Server 2012、Java 6 和 Spring jdbc 3.1.2.release

4

1 回答 1

0

我的最终解决方案是扩展 JdbcTemplate 类“StoredProcedure”并将我的合并语句放入存储过程中。执行命令返回所有存储过程结果。

于 2013-10-17T15:31:16.527 回答