Java 如何与JDBCTemplate、SQL Server和预期输出进行合并

Java 如何与JDBCTemplate、SQL Server和预期输出进行合并,java,sql,merge,jdbctemplate,Java,Sql,Merge,Jdbctemplate,我的问题是这样的 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 INSERT

我的问题是这样的

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;
jdbcTemplate.queryForInt(SQL, id, value);
我的java代码如下所示

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;
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

我的最终解决方案是扩展JdbcTemplate类“StoredProcedure”,并将我的合并语句抛出到存储过程中。execute命令返回所有存储过程结果